我有一個函數,我想在不同的線程中運行。該函數填充的數據結構,例如:在C++中發信號父線程11
per_thread(int start_value, std::vector<SomeStruct>& reference)
{
for (size_t i = 0; i < 500; i++)
{
reference.push_back(func(i));
if (i == 2)
send_signal_back();
}
}
然而,這樣做是通過循環去若干次後,我要開始另一個線程,以此作爲起始值。不幸的是,我不明白如何發送信號回到父線程。
所以我想是這樣的:
for(size_t j = 0; j < 5000; j += num_threads)
{
for (size_t i = 0; i < num_threads; i++)
{
std::async(per_thread(foo(j+i), std::ref(vec));
//wait for signal
}
}
如何發送這樣的信號?
線程之間沒有「父子」關係。線程只是線程。也許你正在考慮流程? – 2013-05-03 21:29:08
@KerrekSB:沒有強制執行的父子關係,但有些線程創建了一些其他線程(除了主線程),所以從這個意義上說,有一個父子關係。我沒有考慮流程,至少沒有我理解的程度。一般而言,我仍然對新併發性感到陌生。 – 2013-05-03 21:31:17
如何處理[條件變量](http://en.cppreference.com/w/cpp/thread/condition_variable)? – 2013-05-03 21:32:53