我遇到的问题是代码段中的第(1),(2)和(3)行。
sleep(for ever)
)
1 void wait()
2 {
3 if( some condition)
4 {
5 queue.enqueue( "current thread object" ); (1)
6 boost::this_thread ( // context switch ) (2)
7 }
8 }
9
10 void signal()
11 {
12 boost::thread myThread = queue.dequeue();
13 myThread.run(); (3)
14 }
1 void wait()
2 {
3 if( some condition)
4 {
5 queue.enqueue( "current thread object" ); (1)
6 boost::this_thread ( // context switch ) (2)
7 }
8 }
9
10 void signal()
11 {
12 boost::thread myThread = queue.dequeue();
13 myThread.run(); (3)
14 }
答案 0 :(得分:0)
虽然我不明白为什么你不只是使用boost::condition_variable
或boost::thread_pool
(取决于你想做什么)。
有一些名为boost::context
的内容正在进行审核,以便添加到boost中,我认为这样做可以满足您的需求。
有些事情:
void wait()
{
if( some condition)
{
myContext->suspend(); // (2)
queue.enqueue(std::move(myContext)); // (1)
}
}
void signal()
{
std::unique_ptr<boost::context> myContext = queue.dequeue();
myContext->resume(); // (3)
}