c++ - 两个线程之间通过事件的一种方式通信

标签 c++ multithreading events

我有两个线程以下列方式通信:线程 A 在消息队列中发布一条消息,线程 B 处理该消息。线程 A 必须等到线程 B 处理消息。

  1. 线程 A

    …………
    在消息队列中发布消息
    WaitForSingleObject (hEvent)
    使用消息处理后的信息
    设置事件(hEvent)
    …………

  2. 线程 B

    处理消息队列中的消息
    设置事件(hEvent)

你看到上面的代码有什么问题吗?我需要在任何地方调用 ResetEvent() 吗? 线程 A 是否需要调用 SetEvent(),或者线程 A 应该只调用 WaitForSingleObject() 而线程 B 应该只调用 SetEvent()?

提前致谢

最佳答案

只要事件是 AutoReset 事件,您就不需要调用 ResetEvent。此参数在 CreateEvent 中设置。我认为你的伪代码没问题。

关于c++ - 两个线程之间通过事件的一种方式通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4388374/

相关文章:

c++ - OpenCV 图像加载程序退出

c++ - 从 vector 中删除元素时析构函数调用两次

java - Spring Webflux 是否在每个请求的单个线程中调用单个 HandlerFunction?

javascript - 在 Javascript 中处理多个关键事件的最佳方式是什么?

javascript - 向下滚动时将类添加到下一个元素,并从父元素中删除类

javascript - 使用jQuery在下拉列表中设置默认值

c++ - cpp 程序中的意外输出

c++ - 不持有锁的条件变量信号

c# - 这是防守加成吗? ".SynchronizingObject =this;"

java - 同步线程以避免 ArrayIndexOutOfBoundsException