Has*_*yed 7 c++ pthreads boost-thread boost-asio concurrent-programming
是否可以对boost :: asio中的条件变量执行异步等待(读取:非阻塞)?如果没有直接支持,任何有关实施它的提示将不胜感激.
我可以实现一个计时器,甚至每隔几毫秒启动一次唤醒,但这种方法非常低劣,我发现很难相信条件变量同步没有实现/记录.
如果我正确理解了intent,你想在asio线程池的上下文中发出一个事件处理程序,当一些条件变量被发出信号时?我认为在处理程序的开头等待条件变量就足够了,而io_service :: post()本身最后会回到池中,这种类似的东西:
#include <iostream>
#include <boost/asio.hpp>
#include <boost/thread.hpp>
boost::asio::io_service io;
boost::mutex mx;
boost::condition_variable cv;
void handler()
{
boost::unique_lock<boost::mutex> lk(mx);
cv.wait(lk);
std::cout << "handler awakened\n";
io.post(handler);
}
void buzzer()
{
for(;;)
{
boost::this_thread::sleep(boost::posix_time::seconds(1));
boost::lock_guard<boost::mutex> lk(mx);
cv.notify_all();
}
}
int main()
{
io.post(handler);
boost::thread bt(buzzer);
io.run();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4687 次 |
| 最近记录: |