线程同步之锁定临界区
2015-08-24 11:34
393 查看
对于临界区,最长使用到的一个结构体以及四个函数分别为:
CRITICAL_SECTION g_criSec;
InitializeCriticalSection(&g_criSec); //初始化临界区,一个临界区只需要初始化一次。
EnterCriticalSection(&g_criSec);//进入临界区
LeaveCriticalSection(&g_criSec);//离开临界区
DeleteCriticalSection(&g_criSec);//删除临界区
CRITICAL_SECTION g_criSec;
InitializeCriticalSection(&g_criSec); //初始化临界区,一个临界区只需要初始化一次。
EnterCriticalSection(&g_criSec);//进入临界区
LeaveCriticalSection(&g_criSec);//离开临界区
DeleteCriticalSection(&g_criSec);//删除临界区
// fstLock.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "process.h" #include "stdio.h" #include "windows.h" CRITICAL_SECTION g_criSec; void critical(); unsigned __stdcall thread1(void *lparam); int main() { InitializeCriticalSection(&g_criSec); unsigned int iThreadId = 0; _beginthreadex(NULL, 0, thread1, NULL, 0, &iThreadId); _beginthreadex(NULL, 0, thread1, NULL, 0, &iThreadId); DeleteCriticalSection(&g_criSec); getchar(); return 0; } void critical() { EnterCriticalSection(&g_criSec); printf("正在调用"); LeaveCriticalSection(&g_criSec);//如果不离开临界区,其他调用无法进入该临界区,会一直等待。 } unsigned __stdcall thread1(void *lparam) { critical(); return 0; }
相关文章推荐
- ConcurrentHashMap源代码阅读笔记
- HDU 1040.As Easy As A+B【排序】【如题(水!水!水!)】【8月24】
- Java总结篇系列:Java泛型
- POJ 3740 Easy Finding (DLX模板)
- QR二维码
- httpclient实例
- 设计模式基本原则
- struct和typedef struct
- PHP5多层继承顺序的bug
- Mysql笔记——DCL
- hdu5413
- Mysql笔记——DCL
- hdu5009 Paint Pearls(离散+线性dp)
- Cohen-SutherLand算法(编码算法)
- 图论09——MATLAB自带最短路函数
- ANIS与UNICODE字符格式转换:MultiByteToWideChar()和WideCharToMultiByte()函数介绍
- 黑马程序员_java TreeMap 源代码分析 平衡二叉树
- 不记住密码
- memcached-session-manager配置(tomcat 全局会话共享)
- hdu5413