단일 스레딩과 멀티 스레딩 프로그래밍의 차이점에 대해 오해하고 있습니다. 다음 질문에 대한 답을 얻으려면 모든 사항을 명확히해야합니다.단일 스레딩과 멀티 스레딩 프로그래밍의 차이점을 알고 싶습니다.
9 개의 독립적 인 작업이 있다고 가정하고 단일 스레드 프로그램과 다중 스레드 프로그램으로이를 수행하려고합니다.
단일 스레드 :
- Execute task 1
- Execute task 2
- Execute task 3
- Execute task 4
- Execute task 5
- Execute task 6
- Execute task 7
- Execute task 8
- Execute task 9
멀티 스레드 :
Thread1 : 기본적으로 이런 식으로 뭔가있을 것
- Execute task 1
- Execute task 2
- Execute task 3
Thread2 :
- Execute task 4
- Execute task 5
- Execute task 6
Thread3 : 내가 알고있는 것처럼
- Execute task 7
- Execute task 8
- Execute task 9
, 양자가 완료되면에만 ONE 스레드가 한 번에 (CPU를 얻을)에서 실행 될 것입니다, 스레드 스케줄러 것 CPU 시간을 다른 스레드에 알리십시오.
그럼 어떤 프로그램을 더 빨리 끝내겠습니까? 다중 스레드 프로그램입니까 (논리적으로)? 또는 그것은 단일 스레드 프로그램입니까? (다중 스레딩에는 많은 시간이 소요되는 컨텍스트 전환이 많기 때문입니까?) 그리고 왜? 좋은 설명이 필요합니다 :)
'어떤 프로그램이 더 일찍 종료할까요? ' Answer : it depends –
메모리 페치, 디스크 I/O, 네트워크 I/O ... 컨텍스트 스위치는 종종 "강제 타임 아웃"동안 선호와 함께 발생하는 단일 CPU에서도 비동기 적으로 발생합니다. 어쨌든, 누가 정말 CPU가 하나 밖에 없습니까? –
질문은 현재 양식에서 답할 수 없습니다. 작업이 서로 독립적이거나 이전 작업의 결과에 의존합니까? 사용 가능한 CPU/코어의 수는 얼마입니까? 작업 프로세서가 바인딩되었거나 I/O 바인딩되어 있습니까? 병렬 처리 (여러 CPU/코어, 프로세서 바운드, 독립적 인 작업)에 이상적인 상황에서 멀티 스레드 버전은 * 빠를 가능성이 큽니다. 하지만 그렇지 않을 수도 있습니다. – dlev