我在编一个多线程的程序时,有一个共用的数据列表userlist。在线程中修改它的地方只有2处,但读取它的地方却有8处(而且修改很少发生)。
问题是我设定怎样的同步类操作,性能才达到最好。
我希望是只有在修改userlist时才将它锁定,不修改时其它所有线程都可以读取数据用来操作。
哪位能给个源码,那是最好。先谢谢了。 [email protected]
问题是我设定怎样的同步类操作,性能才达到最好。
我希望是只有在修改userlist时才将它锁定,不修改时其它所有线程都可以读取数据用来操作。
哪位能给个源码,那是最好。先谢谢了。 [email protected]
下面是伪码:CRITICAL_SECTION cs;InitializeCriticalSection(&cs);DWORD WriteThread(LPVOID lpvParam)
{
EnterCriticalSection(&cs);
your code...........
LeaveCriticalSection(&cs);
return 0;
}
DWORD ReadThread(LPVOID lpvParam)
{
your code...........
return 0;
}有个问题,在读的时候,你的写进程也对数据操作该怎么办。
我的意思是,只要有一个修改数据的线程,则其它所有的线程都不可以读取或修改数据;如果没有任何一个修改数据的线程存在时,则其它所有的读取线程都可以读取数据。
非常感谢你们的支持!