1.互斥体不同进程间的“临界区”,跨进程
#include "stdafx.h" #include <windows.h> int main(int argc, char* argv[]) { //创建一个互斥体 HANDLE g_hMutex = CreateMutex(NULL, FALSE, (LPCWSTR)"XYZ");//第二参数创建出来是否有信号 //等待信号(令牌) WaitForSingleObject(g_hMutex, INFINITE); for (int i = 0; i < 10; i++) { Sleep(1000); printf("B进程的Y线程:%d\n", i); } //释放令牌(信号) ReleaseMutex(g_hMutex); return 0; }
互斥体防多开例子:
// 互斥体.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <windows.h> int main() { //创建一个互斥体 HANDLE g_hMutex = CreateMutex(NULL, FALSE, (LPCWSTR)"防止多开");//第二参数创建出来是否有信号 //等待信号(令牌) DWORD dwRet = GetLastError(); if (g_hMutex) { if (ERROR_ALREADY_EXISTS == dwRet) { CloseHandle(g_hMutex); return 0; } } else { printf("创建失败,程序退出!\n"); CloseHandle(g_hMutex); return 0; } for (int i =0;i<10;i++) { Sleep(1000); printf("A进程的X线程:%d\n", i); } return 0; }