为Windows事件提升等效性

在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线程库中的非命名变体。

相关文章

引言 本文从Linux小白的视角, 在CentOS 7.x服务器上搭建一个...
引言: 多线程编程/异步编程非常复杂,有很多概念和工具需要...
一. 宏观概念 ASP.NET Core Middleware是在应用程序处理管道...
背景 在.Net和C#中运行异步代码相当简单,因为我们有时候需要...
HTTP基本认证 在HTTP中,HTTP基本认证(Basic Authenticatio...
1.Linq 执行多列排序 OrderBy的意义是按照指定顺序排序,连续...