读书人

求教线程同步有关问题

发布时间: 2012-01-21 21:31:43 作者: rapoo

求教,线程同步问题?
struct server_context
{
CRITICAL_SECTION cs;
int running;
};

主线程:
...
struct server_context *sc = (struct server_context *)param;

while(sc-> running)
{
//accept connection and handle.
}
...

工作线程:
...
struct server_context *sc = (struct server_context *)param;

EnterCriticalSection(&sc-> cs);
sc-> running = 0;
LeaveCriticalSection(&sc-> cs);
...

运行工作线程后,主线程并没有因为sc-> runnning = 0而退出循环,请教各位大侠,是何缘由。




[解决办法]
因为变量被线程缓存了,这是优化得结果,你把这个定义变量前面加volatile修饰即可

volatile bool bRunning;
[解决办法]
来晚了。其实也可以用EVENT来通知。
[解决办法]
volatile int running

[解决办法]
加volatile修饰。楼上很多人提到了。
[解决办法]
加volatile修饰.

读书人网 >VC/MFC

热点推荐