假设我的线程函数中有一个switch语句,用于评估触发事件。每个案例都是不同的事件。最好是在案件结束时还是在案件结束时拨打ResetEvent
?在我看来它应该在最后,所以不能再次触发事件,直到线程完成处理上一个事件。如果它被放置在开头,则可以在处理时再次触发事件。
答案 0 :(得分:1)
是。认为这是要走的路。创建手动重置事件(CreateEvent
API的第二个参数),以便在设置事件后不会自动重置事件。
答案 1 :(得分:1)
如果您使用单个Event对象处理传入流量(暗示您没有入站队列),您将错过事件。这真的是你想要的吗?
如果你想捕捉所有事件,那么一个成熟的生产者 - 消费者队列将是一个更好的选择。 Boost.Thread here的参考实现。
出现问题的一个问题 再用多线程代码是怎么回事 将数据从一个线程传输到 另一个。例如,一种常见的方式 并行化串行算法是 将其拆分为独立的块 并制作一条管道 - 每个阶段 管道可以单独运行 线程,每个阶段都添加数据 到下一阶段的输入队列 当它完成。为此工作 正确地说,输入队列需要 编写,以便数据安全 由一个线程添加并删除 另一个没有破坏的线程 数据结构。