您的位置:首页 > 其它

线程同步之锁定临界区

2015-08-24 11:34 393 查看
对于临界区,最长使用到的一个结构体以及四个函数分别为:

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: