Page History
...
| Code Block | ||
|---|---|---|
| ||
//병렬처리를 위한 멀티 코어 프로그래밍 예
Thread[] threads = new Thread[NumOfThread];
출처: http://hsj0511.tistory.com/353 [방랑이 ...]
Process currentProcess = Process.GetCurrentProcess();
foreach (ProcessThread processThread in currentProcess.Threads)
{
processThread.ProcessorAffinity = currentProcess.ProcessorAffinity;
}
for (int i = 0; i < NumOfThread; i++)
{
threads[i].Join();
}
}
//쓰레드 개수가 CORE수를 넘었을때는, 완전한 형태의 병렬처리가 아닐수도 있습니다. |
네트워크 모델을 대입시키면, 동시성은 하나의 장비의 성능을 향샹시키는 스케일업, 병렬처리는 여러개의 장비를 활용하는 스케이아웃의 개념으로 확장이 될수 있습니다. 동시에 처리하느냐? 한꺼번에 처리하느냐? 의 문제는 CPU에만 국한된 문제가 아니기 때문입니다.
Asynchronous vs. Synchronous
...
Non-blocking vs. Blocking
...
Deadlock vs. Starvation vs. Live-lock
...
Race Condition
...
Non-blocking Guarantees (Progress Conditions)
...