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(); } } //쓰레드 개수가 CORE수를 넘었을때는, 완전한 형태의 병렬처리가 아닐며, 동시성에 가까울수 있습니다. |
동시에 처리하느냐? 한꺼번에 처리하느냐? 의 문제는 CPU에만 국한된 문제가 아니기 때문에
단순한 쉬운예로 네트워크 모델을 대입시키면, 동시성은 하나의 장비 성능을 향샹시키는 스케일업, 병렬처리는 여러개의 장비를 활용하는 스케이아웃의 개념으로 확장이 될수 있습니다.
동시에 처리하느냐? 한꺼번에 처리하느냐? 의 문제는 CPU에만 국한된 문제가 아니기 때문입니다.
하지만 이런 처리영역 역시 명확하게 구분이 있는것이 아니며,
조금더 복잡한 네트워크 모델에 적용을 시키면 다르게 해석이 가능합니다.
AKKA의 모듈중 Stream을 대입시키면 , AKKA는 네트워크 모델에서 여러가지의 장치를 이용하여 단순한 병렬처리가 아닌
작업단위를 쪼개어 Flow정의하고 분산환경에서 동시성처리가 가능합니다.( StrameSinkAndFlows ) ,
처리하는 분산환경에서 동시성처리를 위한 툴킷입니다. ( Streams - Working with Graphs ) , 병렬처리의 경우 Akka에서는 route for cluster 로 해결합니다.
...