如题:一个资源,有一个线程专门写入数据,有两个线程专门读出数据.这种情况怎么安排,效率比较高?
谢谢!!!

解决方案 »

  1.   

    问题是,一个生产者,2个消费者;
    考虑事件/信号量/多线程的结合,
    这方面的资料,看 Jiffery 《windows核心编程》,里面有一个2个生产者/3个消费者的
    例子,堪称经典,
      

  2.   

    class Resource
    {
    private:
    CRITICALSECTION cs;
    void Lock();
    void Unlock();public:
    void Process(void *pThis);
    }其余自己找找把
      

  3.   

    好的,
    总共有3个线程,线程A,线程B,线程C.3个线程都是并发的
    有一个资源,比如一个公共变量V,
    A只负责写数据到V,
    B和C只负责从V中读数据.
    我认为的是,B和C可以同时读V,
    而在A写的时候是不能读V的.
    同样的,B和C中只要有一个在读数据,A就不可以写数据到V我是这样想的,定义两个CRITICAL_SECTION(临界体)csB和csC.
    其中csB是专门给B用,csC是专门给C用,而A要写V之前要同时进入csB和csC,
    B读数据前只要进入csB,C读数据之前也只要进入csC就可以了.
    当然,换成互斥也可以.
      

  4.   

    定义两个CRITICAL_SECTION(临界体)csB和csC.
    其中csB是专门给B用,csC是专门给C用,而A要写V之前要同时进入csB和csC,
    B读数据前只要进入csB,C读数据之前也只要进入csC就可以了.