在Windows c + +我可以创build一个事件的句柄
处理h = CreateEvent(…)
然后我可以设置和重置该事件
SetEvent(…)和ResetEvent(…)
如何build立提升python 3.4共享库win8.1 64位与msvc 10.0
C ++ boost :: thread,如何在类中启动一个线程
Boost ::在Windows上隐藏控制台
将库中的boost :: ptr_list传递给客户端
在Windows 7上构buildBoost 1.49
最后,我可以使用命令OpenEvent(…)
是否有提升等同于事件?
为什么boost asio函数expires_from_now()取消deadline_timer?
提升Netbeans 7.1.1
如何在Windows上构buildlib2geom
在Windows上构buildBoost
C ++ Boost为两个不同的进程创build共享内存
我认为你需要使用boost::mutex , boost::unique_lock , boost::condition_variable和可能的bool来模仿事件。
实际上你可能需要一些WaitForSingleObject来等待一个事件。 可能是这样的:
void wait_for_user_input() { boost::unique_lock<boost::mutex> lock(mut); while(!data_ready) { cond.wait(lock); } process_user_input(); // it might be not necessary to hold mutex locked here!!! // if so just add curly braces like this: // void wait_for_user_input() // { // { // boost::unique_lock<boost::mutex> lock(mut); // while(!data_ready) { cond.wait(lock); } // } // process_user_input(); // } }
线程安全的Boost Signals2库可能对您有用。 原来的信号库不是线程安全的,但是实现了一个信号/插槽框架,这个框架距离事件的想法不远。 由于Signals2是线程安全的,因此您应该可以利用它来在线程之间传递事件。
一个提升锁 (mutex)会做几乎相同的事情。 你可以等这些。
你想要的是来自boost进程库的 named_condition变量 。 与Windows事件的主要区别是,您必须将它们与named_mutex结合使用。
请注意,可以在单个进程中使用这些boost进程间基元。 我假设你需要这些,因为你正在使用OpenEvent(这意味着通过使用名称共享对象)。 如果可以避免使用名称,那么可以使用boost线程库中的非命名变体。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。