我的程序有一个主线程,和一个子线程主线程是一个生产者,负责生产苹果,然后把苹果扔到框子里
子线程是一个消费者,负责不停地把框子里的苹果拿出来,吃掉;但是在框子里没有苹果的时候,子线程必须等待主线程生产苹果请问这个问题应该如何解决?

解决方案 »

  1.   

    看看我的资源,有下载的,很全的一个Demo,可以拿来直接用;
      

  2.   

    定义一个全局的变量表示框中现有苹果数量,主线程每次让数量加一,子线程判断数量是否为空后将数量减一。关键是对这两个线程调用是会不会碰巧一起访问该全局变量  可能会发生意想不到情况  最好给该变量设置LOCK锁  防止冲突
      

  3.   

    没有苹果的时候 消费线程需要 通知生产线程去生产 然后自己 wait();生产线程需要 循环生产苹果,直到苹果库满仓。 满仓判断为true的时候 生产线程进入wait();
    并且,在生产线程每次执行完生产之后要通知所有 消费线程过来消费,让还处于 wait的消费者苏醒过来。基本就是这个样子。
      

  4.   

    1、 C#多线程学习 (三) 生产者和消费者
    http://www.cnblogs.com/xugang/archive/2008/03/23/1118594.html
      

  5.   

    有具体代码吗?框子是一个QUEUE,谢谢
      

  6.   

    OK,我已经想过了,还是用BACKGROUNDWORKER来做,谢谢大家的顶贴
      

  7.   


    昏倒,还是觉得BACKGROUNDWORKER不适合我的应用还有人可以提出建议和例程吗?
      

  8.   

    谢谢各位的顶贴,我现在已经实现这个应用用MONITOR.ENTER(N);
    和MONITOR.EXIT(N);
    将共享变量锁住