临界区
来源:互联网 发布:plsql 导入excel数据 编辑:程序博客网 时间:2024/04/27 23:35
临界区机制是保证在某一时刻只有一个线程能访问数据的简便方法,即在任意时刻只允许一个线程对共享资源进行访问。如果有多个线程试图同时访问临界区,那么在一个线程进入后其他所有试图访问此临界区的线程被挂起,并一直持续到进入临界区的线程离开。临界区在被释放后,其他线程可以继续抢占,并以此达到原子方式操作共享资源的目的。
下面是一个windows下使用临介区访问共享数据的多线程例子:
#include<windows.h>
#include<iostream>
using namespace std;
CRITICAL_SECTION cs;
int critical_value=0;
DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
for(int i=0;i<5;i++)
{
EnterCriticalSection(&cs);
critical_value++;
printf("critical_value=%d\n",critical_value);
LeaveCriticalSection(&cs);
}
return 1;
}
int main()
{
HANDLE hThread1;
HANDLE hThread2;
UINT uThreadID;
InitializeCriticalSection(&cs);
hThread1=CreateThread(NULL,0,ThreadProc,NULL,0,NULL);
hThread2=CreateThread(NULL,0,ThreadProc,NULL,0,NULL);
CloseHandle(hThread1);
CloseHandle(hThread2);
DeleteCriticalSection(&cs);
return 0;
}
- 临界资源 & 临界区
- 临界段临界区
- 临界区
- 临界区
- 临界区
- 临界区
- 临界区
- 临界区
- 临界区
- 临界区
- 临界区
- 临界区
- 临界区
- 临界区
- 临界区
- 临界区
- 临界区
- 临界区
- 什么是BSP
- IOS 定位系统实例
- Android Obex 规范
- NOR型flash与NAND型flash的区别
- Android电容触摸屏驱动
- 临界区
- 解释类与编译类语言
- Android按键驱动
- Android之LCD屏驱动
- JavaScript事件处理
- Android之G-sensor驱动
- 教你把「显示桌面」快捷键 找回来!
- 利用jquery框架中ajax实现前台与struts2中action交互
- Android中Service与Thread的区别