Page 29 -
P. 29
primes.push_back(n);
}
}
})); 1
// 스레드 객체를 일단 갖고 있는다.
threads.push_back(thread); 멀티스레딩
}
// 모든 스레드가 일을 마칠 때까지 기다린다.
for (auto thread : threads)
{
thread->join();
}
// 끝
auto t1 = chrono::system_clock::now();
auto duration = chrono::duration_cast<chrono::milliseconds>(t1 - t0).count();
cout << "Took " << duration << " milliseconds." << endl;
// PrintNumbers(primes);
return 0;
}
프로그램을 실행하면 안타깝게도 그림 1-17과 같은 오류가 발생합니다.
그림 1-17 무작정 시도한 멀티스레드 프로그래밍 오류
왜 이러한 일이 발생할까요? 이를 이해하려면 스레드의 정체부터 알아야 합니다.
037