-1
我寫了一個類似於以下結構的多線程程序(我省略了互斥和無關代碼),並且在從線程調用時阻止對boost::thread_group.add_thread()
的調用。有沒有辦法解決這個問題,所以通話不會阻止?從線程調用add_thread時提升thread_group塊,爲什麼?
boost::thread_group group;
void threaded_function2()
{
}
void threaded_function()
{
if(condition)
{
boost::thread *t3 = new boost::thread(boost::bind(&threaded_function2));
group.add_thread(t3); // <-- Blocks on this call
}
}
int main()
{
boost::thread *t1 = new boost::thread(boost::bind(&threaded_function));
boost::thread *t2 = new boost::thread(boost::bind(&threaded_function));
group.add_thread(t1);
group.add_thread(t2);
group.join_all();
return 0;
}
謝謝大家。
這就是發生了什麼,我意識到如果它不起作用,它肯定是一個糟糕的設計,所以我已經將我的設計重構爲更流暢的結構,仍然能夠滿足我的需求。謝謝! – nickb