回复3楼你的想法有一个问题存在:你的提法很好,但仍需要借助排队来平衡读写各自的次数,否则写会饿死,或者读会饿死,即让他们各自占有的时间尽量平衡点,与其自已写一个读写调度队列,为什么不直接修改CCriticalSection,让他本身在内核层就有这种机制,效率不是最高吗

解决方案 »

  1.   

    是需要在WINDOWS内核模式下,重新写一个CCriticalSection类,然后留 出接口供应用层API调用么
      

  2.   

    http://blog.csdn.net/byxdaz/article/details/6715548
      

  3.   

    增加一个标记变量bool isWrite;
    写的线程开写的同时isWrite = true;
    写完了isWrite = false;
    读的线程判断这个bool变量,如果有线程正在写就
    CCriticalSection::Lock
    如果没有线程正在写,就直接开读。当然,对这个isWrite的访问也要一个单独的临界区对象来加锁。
      

  4.   

    回复8楼:要VS2008,且VISTA以上的操作系统才能用,我是WIN7系统 ,用的是VS2005,看来要换了