Linux에서 g ++ 컴파일러를 사용하고 있습니다 (가상 상자의 우분투). 나는 생성 후 std :: threads에 적절하게 참여하려고한다. do는 한 번에 시작하는 것처럼 보이지만 계속해서 하나씩 끝납니다. 총 실행 시간은 단일 스레드 시간의 n 배입니다. 나는이 문제를 pthreads와 함께 보지 못했다. Pthreads는 완벽하게 확장되며 실행 시간은 단일 스레드 시간의 (1/n) 배입니다.linux/mac OS에서 C++ 스레드가 병렬 실행되지 않음
Mac OS에서 clang ++ 컴파일러와 동일한 동작을 관찰했습니다.
std :: thread는 'join'이 호출 될 때만 실행될 수 있습니까? std :: thread 생성자에서 추가 매개 변수를 전달하여 병렬로 실행하도록해야합니까? C++ 11 설명서를 검색하여 명백한 이유를 찾을 수 없습니다.
도움을 주시면 감사하겠습니다.
[MCVE] (http://stackoverflow.com/help/mcve)? –
표준에서는 'std :: thread'의 개별 인스턴스가 병렬로 실행될 것을 요구하지 않고, 오직 병렬로 실행되는 _possibility_를 제공합니다. 주 스레드에서 잠을 자면 어떻게되는지보십시오. – Tim
언제'join()'을 부를까요? "생성 후"호출하면 호출 스레드가 새로 작성된 스레드 완료를 기다리게합니다. –