为Win32建立临界区

来源:互联网 发布:c与lua交互数组索引 编辑:程序博客网 时间:2024/06/06 01:04

    临界区,可以看作是对一个需要操作共享变量的代码段,在多线程并发的情况下,为了不至于某个线程会取得脏数据,需要控制同一时刻( 这里用时刻好象不太确切,应该说,某个线程处理这个共享变量到一半,时间片到,而得到时间片的线程也要对这个共享变量进行操作 )进入临界区的线程.

    在Win32中,有一个CRITICAL_SECTION变量,你需要做的就是在建立该变量后通过它来为资源声明一个保护,示例程序如下:

 

 DWORD WINAPI ThreadFunc( LPVOID n ){

     EnterCriticalSection( &critical_sec );
     cout<<"abcdefgh"<<endl;
     LeaveCriticalSection( &critical_sec );
 
     return 0;
}

 

    如果你在主线程中,启动多个以上这样的子线程,没有设置为临界区的化,输出的字母会变的凌乱不堪,因为流是共享资源,如果有多个填充流的线程操作,肯定会使得每个线程都无法得到预期的结果.

    但是如果将对于输出流的操作编写为临界区,那么线程一旦开始对输出流进行操作,必然会完成它,因为一旦有线程霸占临界区,其他线程是无法再进入的.

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 嫁给病弱太子后我躺赢了 咸鱼娘娘一心只想翻墙 救命!破产后高冷总裁处处招惹我 冷酷将军每天都想要贴贴 何以赎光 甜腻!病娇傅少竟然暗恋我! 天价萌妻:偏执帝少心尖宠 有读心术后,战神把娘子宠上天 穿书后,我刷错了反派的好感度 摄政王怀里的团宠美人娇又软 满级千金不想掉马 女帝她就是个卖药的! 华娱激荡年代 她来看我的演唱会 快穿:娇养反派大佬做替身 不努力种田就要和相公继承皇位了 穿书末世之我是金手指 转生恶少后的魔幻日常 穿书后我成了反派男二的铁血妈粉 带着超市重返年代 新婚夜,我被冷冰冰的王爷读心了 修仙女配拿了反派剧本 影后的假面童话 克死前夫后我成了心软的神 新婚夜,我治好了失明太子的隐疾 沦陷野玫瑰 完球!我的崽居然是反派 重生后她被憨憨相公娇宠了 师祖回归,徒弟各个是疯批大佬 植物人老公苏醒后,她只想逃 他怎么可能是魔尊 农家小团宠:带着空间撩大佬 快穿做个好婆婆 医路芳华 满级真千金:一品女法医 惊!举重妖精被电竞奶狗缠上了 团宠小农女:带着功德空间去逃荒 被迫快穿后我只想当咸鱼 顶流影帝竹马来讨债 穿越后,太子妃靠种田轰动全京城 高考结束后我和死对头HE了