Page History
...
Code Block | ||
---|---|---|
| ||
//병렬처리를 위한 멀티 코어 프로그래밍 예 Thread[] threads = new Thread[NumOfThread]; Process currentProcess = Process.GetCurrentProcess(); foreach (ProcessThread processThread in currentProcess.Threads) { processThread.ProcessorAffinity = currentProcess.ProcessorAffinity; } for (int i = 0; i < NumOfThread; i++) { threads[i].Join(); } } //명시적으로 특정 Task를 독립적인 물리적으로 처리가능한 단위(CPU Core)에게 명시적 작업을 위임했을때 완전한 형태의 병렬처리임 ( Task수는 Core개수를 넘지 않는 조건) |
주어진 시간에 작업을 나눠 스레드 스케쥴링에의해 블락킹없이 동시에 처리하느냐(동시성)?
자원을 자원을 바탕으로 한꺼번에 처리하느냐(병렬)? 의 문제는 CPU에만 국한된 문제가 아니며
어느방식을 사용하던, 실제로는 꼭 한가지 방식 한정적으로 작동 되지 않습니다.
Info | ||
---|---|---|
| ||
단순하게 네트워크 모델을 대입시키면,단순한 분산처리 작동을 고려하면, ( L4장비에의해서만 병렬처리를 고민함 ) 하나의 장비에 어떻게 여러가지 일을 복수개의 작업을 한꺼번에 효율적으로 시킬것인가? (동시성) 여러가지 장비에 어떻게 단일 복수 작업을 배분하여 시킬것인가? ( 병렬처리) 의 고민이될듯하며 조금더 복잡한 네트워크 모델을 적용을 시키면 새로운 해석이 가능합니다.분산처리모델을 적용 시키면 ( 스위칭 장비와 연동되어, 서비스에 분산 모델이 적용되어 작동됨 ) 여러가지 장비에 ,여러가지 작업에대한 서브Task를 어떻게 나눠서 동시에 시킬것인가분산 처리할것인가? ( 동시성과 병렬처리) 깊은 고민에 빠질수가 있습니다. Akka에서는 StrameSinkAndFlows+Cluster 조합으로 이러한 문제를 풀려고 하고있습니다. |
...