一个接一个地运行工作线程

时间:2016-01-14 06:28:04

标签: c++ multithreading mfc synchronization

我有两个工作线程,我想按顺序运行,thread1& thread2一个接一个。为了控制它们,我使用了两个CEvent(MFC api)同步对象。我当前的实现(下面)并不完美,为什么它会进入死锁状态。请告诉我如何改进我的代码。

QApplication

理想情况下,我希望两个线程运行如下: -

表示i = 1到20。

线程1()。 线程2()。

对于i = 21到40。

线程1()。 线程2()。

表示i = 41至60。

线程1()。 线程2()。

对于i = 61到80。

线程1() 线程2()

表示i = 81到100

线程1()。 线程2()。

1 个答案:

答案 0 :(得分:0)

只使用1个事件,设置全局矢量变化的信号要容易得多。 您必须使用类似CCricticalSection的同步来防止对全局向量的并发访问。

  1. 启动主题
  2. 线程1锁定全局向量将一些数据推入其中设置事件并释放锁定。
  3. 线程2只是等待事件。它锁定全局向量。 pops检索一个元素。如果向量为空,则重置事件。线程2解锁向量并处理数据。