Versions Compared

Key

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

...

Code Block
languagec#
linenumberstrue
Task task1;
Task task2;
Task task3;


task1.Start();
task2.Start();
task3.Start();
//물론 이 코드는, 실행 최적화에의해 다중코어로 병렬처리가 될수 있습니다. 
//Task의 개수가 코어개수를 초과했을시 동시성 설명이 가능합니다.
//Core와 Task의 개수가 같다고 해도, 한가지 Task가 특정 Core에만 작동되어야하는 룰은 없음 ( 개발로직은 신경쓰지 않은체 OS 실행 최적화에 따름 )


Parallelism

...


병렬처리의 경우 작업을 명시적으로 여러개의 물리(코어)적 연산 장치에의하여 동시에 처리하는 방식입니다.

...

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

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에만 국한된 문제가 아니며

...