我做的多線程在C++中。我在Windows上。 這是我有:C++中止被稱爲
int i;
try {
std::vector<std::thread> threads;
for (i = 0; i < threadscount; i++) {
threads.push_back(std::thread(myvoid));
std::cout << "started\n";
}
for (i = 0; i < threadscount; i++) {
threads[i].join();
std::cout << "joined\n";
}
}
catch (...) {}
但是,當我設置threadscount
到2000多個線程我得到:
中止()被調用。
爲什麼會出現這種情況?我可以得到解決方案來解決這個問題嗎?
如果你真的想知道,在運行調試你的代碼;當中止被調用時它應該暫停。正如SergeyA指出的那樣,2000線程是過度殺傷。 –
32位或64位?每個線程都需要2M的內存。 2000線程是單獨堆棧的4G內存。這不適合32位程序中的2G虛擬內存。 –
@MartinBonner,很好。沒想到這件事,還沒有處理32位的年齡...... – SergeyA