首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

求教,线程同步有关问题

2012-01-21 
求教,线程同步问题?structserver_context{CRITICAL_SECTIONcsintrunning}主线程:...structserver_conte

求教,线程同步问题?
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修饰.

热点排行