互斥对象和临界区对象和事件对象作用一样
用于实现线程同步
互斥对象可以在线程中使用
CreateMutex()创建并返回互斥对象 原型如下
HANDLE CreateMutex(
LPSECURITY_ATTIRIBUTES lpMutexAttributes,
BOOL bInitialOwner,
LPCTSTR lpName
);
调用成功 返回新创建的互斥对象句柄
否则 返回NULL
参数lpMutexAttributes指定新创建互斥对象的安全属性
如果参数为NULL 表示互斥对象拥有默认的安全属性
参数bInitialOwner表示互斥对象的拥有者
如果为true,则表示创建该互斥对象的线程拥有其所有权
如果为false,表示创建互斥对象的线程不能拥有互斥对象的所有权
参数lpName表示互斥对象的名称
若参数为NULL,表示程序创建的是匿名对象
如果用户为该参数指定值 则在程序中可以调用函数OpenMutex()打开一个
命名的互斥对象
使用互斥对象实现线程的同步
#include <windows.h> //包含头文件
#include <stdio.h>
DWORD WINAPI myfun1(LPVOID lpParameter);//声明线程函数
DWORD WINAPI myfun2(LPVOID lpParameter);
HANDLE hmutex;
int a=0; //定义全局变量a
int main()
{
hmutex=::CreateMutex(NULL,FALSE,NULL); //创建互斥对象并返回其句柄
HANDLE h1,h2;