Page History
...
1Thread로 순차처리를 하게되면 6분이 걸리게 됩니다. 이 문제를 해결하기위해
전통적인 동시성의 처리 ,전통적으로 이러한 문제를 해결하려고, 멀티스레드 프로그래밍방식에서는 3개의 Thread가 각각 하나의 임무를맞고 OS의 스케쥴러 우선순위에
의해 작업을 처리하였습니다. 이것역시 작동방식적으로 동시처리가 맞습니다. 번갈아가며 처리하는것입니다. ( CPU1코어기준 여러 스레드는 Context 스위치가 발생하기 때문에 실제는 번갈아가며 작동됩니다하나의 일밖에못합니다.)
하지만 위 이 방식은, 반찬을 준비하는 스레드가 일이 끝났다고 가정해봅시다. 스레드 자원을 반환하겠지만 전체적인 총량에대한
시간을 줄이기위해 반찬 준비하던 스레드가 라면을 끓이는데 걸리는시간을 줄이거나 햇반을 익히는데 전혀 도움을 줄수가 없음으로
3분이란 시간을 결국 줄일수가 없으며 다소 비싼 자원인 스레드를 사용하였습니다. 그래서 멀티스레딩 프로그래밍은 스레드 개수를
얼마나 스레드 개수를얼마나 효율적으로 제한을두고 빨리 반환 하느냐에 포커싱이 맞춰져 있습니다. 있으며 3개의 Thread가 꼭 필요하다란 것입니다.
이 작업을 순차처리도아니고/멀티 스레드 중심적이지 않는 작업으로 과연 1인분의 식사를 준비하는데 3명이 필요한것인가? 에대한 관점으로 변환해봅시다.
물을 끓이고(Task1) - 햇밧에 전자렌지돌리고(Task2) - 후라이팬가열(Task3) - 라면넣고(Task1) - 햇반이 익었는지 보고(Task2) - 후라이팬을 뒤집고(Task3)
1Thread만 사용해도 적은자원으로 3분만에 사실은 1인분의 식사준비를 마칠수가 있다란것에 의미가 있으며, 자원을 낭비하지 않음으로 더많은 일을 할수가 있게됩니다.
물론 실제로는, 작업완료시간을 목표로 두고 작동되는것도 아니며 꼭 단일 thread만 사용하는것도 아닙니다.
효율적으로 블락킹없이 동시에 여러가지 일을 진행 한다는데 의미가 있습니다.
있다란것입니다.
프로그래밍 관점에서 우리가 진행하려는 작업(함수)을 한꺼번에 진행하는데 의미가있으며, 하드웨어 효율적인 사용측면에서는
그러한 작업이 무조건 Thread를 안늘려도 할수 있다란것입니다.
Info |
---|
앞으로 Akka.net에서 진행하게 처리방식은 멀티스레드 프로그래밍을 통한 동시성처리가 아님을 현재 섹션에서는 기억만 해두시면 됩니다. |
동시성 프로그래밍에 대한 더 전문적인 설명은 아래 블로그를 참고하세요 |
...