如果操作的结果表明锁没有争用,则对pthread_mutex_lock的调用在没有上下文切换到内核的情况下返回,因此...
pthread_mutex_lock(&class_mutex); NoOfReaders--;if(NoOfReaders==0&& NoOfWritersWaiting>0) pthread_cond_signal(&writer_gate); pthread_mutex_unlock(&class_mutex); }voidw_unlock() { pthread_mutex_lock(&class_mutex); NoOfWriters--;if(NoOfWritersWaiting>0) pthread_cond_signal(&writer_gate...
voidrunWithLock(conststd::stringmsg){ mutex.lock(); run(msg); mutex.unlock(); } 我要说话 测试不用mutex和用mutex的函数在独立线程中并发执行,t1和t2交替输出,t3和t4顺序输出。 我要说话 1 2 3 4 5 6 7 8 9 10 11 12 13 voidTestMutex(){ ...
而Mutex则多用于锁定多线程间的同步调用。简单的说,Monitor和Lock多用于锁定被调用端,而Mutex则多用锁定调用端。 例如下面程序:由于这种程序都是毫秒级的,所以运行下面的程序可能在不同的机器上有不同的结果,在同一台机器上不同时刻运行也有不同的结果,我的测试环境为vs2005, windowsXp , CPU3.0 , 1 G monery...