频繁使用临界区对程序都有哪些影响?一次加锁的效率如何?谢谢!

解决方案 »

  1.   

    很难回答这个问题,要根据具体的应用.
    一次加锁只能省去采用多次进入时的EnterCriticalSection、LeaveCriticalSection函数调用开销和几个互锁函数的开销,并且避免了多次进入CS时,中间操作的阻塞.
    而既然有这个疑问,就表示一次加锁的话,临界区内会执行不少不需要CS保护的操作,如果这些操作很快速,并且可以换取前面节省的时间的话,可以选择一次加锁;如果这些操作有可能使线程挂起,那最好还是选择多次进入的好.
      

  2.   

    要工作就要花时间,这是正常的,也是必须的,事实上 EnterCriticalSection、LeaveCriticalSection 的效率是很高的,个人认为,最好不要使用一次加锁,因为在节省一部分资源的同时,它又在其他方面增加了开销,最终效率谁好谁差并不一定,要根据具体实现确定,同时,这种效率上的差距也不会太大。