我创建了两个线程,thread1和thread2,1用来给串口下发数据,2用来接收串口返回的数据。现在有个问题,我想线程1启动的同时启动线程2,因为要与设备有个握手,所以当线程2收到握手返回的数据后,线程1再下发其它的查询指令。我想知道线程1,2之间怎么通信,当2没有收到握手时,让线程1暂时停止。收到握手后在将线程1开启。

解决方案 »

  1.   

    设个变量    2没握手前为false,线程1不停的循环执行 。   2握手后变为true,1再进行查询    
      

  2.   

    可以查查 Thread.MemoryBarrier 或者 Semaphore 做个栏栅使其同步,
      

  3.   

    辅助线程的启动的时间是无法明确控制的,clr via C#的jeffery已经说的很明确了。大概同时到是可以。
    一个线程通知另外一个线程可以使用信号量,AutoResetEvent、ManualResetEvent
    或者让线程1回旋等待,用变量来通知如:InterLocked.Decement