四种进程或线程同步互斥的控制方法:1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2、互斥量:为协调共同对一个共享资源的单独访问而设计的。 3、信号量:为控制一个具有有限数量用户资源而设计。 4、事件: 用来通知线程有一些事件已发生,从而启动后继任务的开始。
临界区(Critical Section)(同一个进程内,实现互斥,但,无法实现同步,因为其具有“线程所有权”)
#include "stdafx.h"
#include
#include
#include
long g_nNum; //全局变量
unsigned int __stdcall Fun(void *pPM); //线程函数
const int THREAD_NUM = 10; //子线程个数
CRITICAL_SECTION g_cs1;
CRITICAL_SECTION g_cs2;
int _tmain(int argc, _TCHAR* argv[])
{
g_nNum = 0;
HANDLE handle[THREAD_NUM];
InitializeCriticalSection(&g_cs1);
InitializeCriticalSection(&g_cs2);
int i = 0;
while (i |