Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

물론 실제로는, 작업완료시간을 목표로 두고 작동되는것이 아닌 블락킹없이 동시에 여러가지 일을 처리한다는데 의미가 있습니다.

...



...

Parallelism

...


병렬처리의 경우 작업을 명시적으로 여러개의 물리(코어)적 연산 장치에 각각 Join시켜  한꺼번에 처리하는 경우를 진정한 의미에서 병렬처리라 할수 있습니다.

...

처음한 식사준비 예시에서 연장을 한다고 하면  

  • Task1은 라면만 끊인다. -3분
  • Task2는 밥만 짓는다 -2분
  • Task3는 반찬을 준비한다. -1분


그낭 묵묵히 독립적으로 자기만의 일을 하는것입니다.  여기서 여러명의 식사가 필요하면 단순하게 병렬처리 개수를 늘려서 해결합니다.

단일기기에서 성능을 낼수 있는 단순한 방법이였으나 자원을 많이 사용하는 방식이여서 동시성처리와 병렬처리가 혼합이되어 스케일업의 최적화전략을 세울수 있습니다. 

하지만 이역시 CPU/IO처리 발전의 한계에 도달하여 스케일아웃이 가능한 분산처리 개념으로 연장이 됩니다. 자신의 목표치가 먼저 달성되면  유휴상태가 되기도 하지만, 남의일을 대신 해줄순 없습니다.


Code Block
languagec#
themeEmacs
linenumberstrue
//병렬처리를 위한 멀티 코어 프로그래밍 예 

Thread[] threads = new Thread[NumOfThread];

Process currentProcess = Process.GetCurrentProcess();
foreach (ProcessThread processThread in currentProcess.Threads) 
{ 
processThread.ProcessorAffinity = currentProcess.ProcessorAffinity;
}

//물리적단위인 Core(process) 에 Task를 명시적으로 걸고 동시에 시작해버립니다.
for (int i = 0; i < NumOfThread; i++) 
{ 
threads[i].Join(); 
}
}

...