Page History
...
Code Block | ||||
---|---|---|---|---|
| ||||
Task task1;
Task task2;
Task task3;
task1.Start();
task2.Start();
task3.Start();
//물론 이 코드는, 실행 최적화에의해 다중코어로 병렬처리가 될수 있습니다.
//Task의 개수가 코어개수를 초과했을시 동시성 설명이 가능합니다.
//Core와 Task의 개수가 같다고 해도, 한가지 Task가 특정 Core에만 작동되어야하는 룰은 없음 ( 개발로직은 신경쓰지 않은체 OS 실행 최적화에 따름 ) |
Parallelism
...
병렬처리의 경우 작업을 명시적으로 여러개의 물리(코어)적 연산 장치에의하여 동시에 처리하는 방식입니다.
...
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수를 넘었을때는,명시적으로 특정 Task를 독립적인 물리적으로 처리가능한 단위(CPU Core)에게 명시적 작업을 위임했을때 완전한 형태의 병렬처리가병렬처리임 아니며,( 동시성개념으로Task수는 전환Core개수를 될수가 있습니다.(실질적인 병렬처리가 아니기때문에)넘지 않는 조건) |
주어진 시간에 작업을 나눠 동시에 처리하느냐(동시성)? 자원을 바탕으로 한꺼번에 처리하느냐(병렬)? 의 문제는 CPU에만 국한된 문제가 아니며
...