多线程(在多核机器上)进入临界区的时间怎么缩短
剑影 2010-06-06 07:25:19 两根线程写同一个文件的不同部分,各写一半。
写文件的ofstream是全局变量,即两个线程共用一个ofstream。
写文件前先加密数据,使用ofstream时进入临界区,再写文件。
但在这种情况下,双线程的效率反而不如一个线程的。
检查发现进入临界区用了很多时间,
用一个线程时进入临界区的时间为0,而用双线和的话,进入时间花了数十毫秒的样子。
计算时间用的是GetTickCount(),过会考虑用QueryPerformanceCounter()试试。
不过这不是主要问题,问题很明显就是在进入临界区花了太多时间。
进入临界区用的是EnterCriticalSection();