我需要根據需要創建一些線程,因爲我不前我是多麼需要知道的。 要「存儲」線程即時通訊使用矢量std::vector<std::thread> threads;
每次我創建一個新的線程時間我把它們放回在載體:threads.push_back(std::thread(worker));
標準C++線程ID - 奇怪的行爲
存儲(用於測試)線程ID我用下面的:根據double test = std::hash<std::thread::id>()(std::this_thread::get_id());
到CPP參考hash,thread::id和get_id這應該工作正常。
但只此行即時得到的ID總是0(零)
如果ID添加散列線之下以下行它的工作原理,我從線程得到一個散列ID:std::thread::id tid = std::this_thread::get_id();
即使我不使用tid
有人可以解釋這種現象? IM與Eclipse JUNO合作和清洗+重建項目幾次......我只是不明白:/
這裏的代碼: (用線,因爲這裏的格式規則是愚蠢線-.-
std::vector<std::thread> threads;
void worker(){
double test = std::hash<std::thread::id>()(std::this_thread::get_id());
std::thread::id tid = std::this_thread::get_id();
printf("%ld\n", test);
}
void joinThreads(std::thread& t)
{
t.join();
}
int main() {
for (int i = 0; i < 10; ++i) {
threads.push_back(std::thread(worker));
}
std::for_each(threads.begin(),threads.end(),joinThreads);
return 0;
}
發佈編碼? –
代碼被添加..花了一段時間,因爲我總是得到「錯誤」格式的錯誤Oo – baam