critical section object 看了msdn,还不是太理解。谁详细解释一下,干什么用的,工作机制,用法。谢了先
解决方案 »
- chtmlview之类的,如何使用ie8的某些特性,比如广告阻止,inprivate..
- error LNK2005: _DllMain@12 already defined in Dll3.obj
- 单独编写个网格覆盖在另一个软件的窗口上,请问可以吗?
- 使用GetBkColor()函数遇到的问题
- 线程之间传递参数的限制?
- 各位大侠帮帮忙!
- 求救:大虾们看看这个功能如何实现。走过路过都来看一看哪。
- 不用RasCreatePhoneEntry,程序中如何直接创建一拨号连接?
- 请大家帮我看下这个问题(关于DLL)
- 最近再学Ardence RTX实时系统软件,有很多不懂的地方,下面是一个定时器程序,不太明白?请路过大虾们帮忙看看
- media player 9 的界面是怎么做出来。还有msn explore的界面是怎么开发出来的。
- 还是在win2000下的关机问题
如果两个线程需要访问共享资源,比如一块内存,一个文件,一个数据结构
时,这时需要使用同步机制对资源进行保护,否则会引起意想不到的错误,
比方说,
线程1
a = 1;
printf("%d",a);
线程2
a = 5;
printf("%d",a);
如果在线程1为a赋值后,但还未执行printf时,线程2这时执行了a=5,当
线程1执行printf时,就会得到结果5,而不是2.
而如果使用临界区保护后,就会避免这种情况。
这样使用,先初使化.
CRITICAL_SECTION crisec_a;
InitializeCriticalSecion(&crisec_a);线程1
EnterCriticalSection(&crisec_a);
a = 1;
printf("%d",a);
LeaveCriticalSection(&crisec_a);
线程2
EnterCriticalSection(&crisec_a);
a = 5;
printf("%d",a);
LeaveCriticalSection(&crisec_a);最后需要清除
DeleteCriticalSection(&crisec_a);