我做了7个线程,前面6个可以独立运行,但我要求前面6个线程一起与第7个线程进行同步---前面6个线程只要有一个在运行,第7个线程就必须要停下来,反过来,只要第7个线程在运行,那么前面6个线程也必须要停下来,但这6个线程之间不需要同步,各位大虾,该怎么做?

解决方案 »

  1.   

    两个全局BOOL变量,前六个控制一个,第七个控制一个
    判断两个变量的值就可以了
      

  2.   

    前六个线程先用mutex1同步再等待mutex2,线程7直接等待mutex2
      

  3.   

    把这两种线程分写不同的函数,一个mutex就可以了啊。mutex g_mutex;
    void thread_7(void *) {
      g_mutex.lock();}void tthrea1_6(void *){
    }
      

  4.   

    把这两种线程分写不同的函数,一个mutex就可以了啊。mutex g_mutex;
    void thread_7(void *) {
      g_mutex.lock();
    ...
    }void tthrea1_6(void *){
      g_mutex.lock();
     ...
    }
      

  5.   

    zzw,你这样不符合lz的要求了,你这样前6个线程都是互斥运行的了
      

  6.   

    1, 前六个线程等待一个事件event,第七个线程运行的时候把event置为non signal状态,不运行的时候置为signal状态。第七个线程等待一个和semaphore行为相反的对象,<windows核心编程>里面好像有个例子。2,或者使用共享独占锁,前六个线程共享某对象,后一个线程独占该对象。这个<windows核心编程>里面也有个例子:CSWNRG。