C#和C++之间互斥锁防冲突
目的
用Mutex (互斥锁)在两种语言里面保证数据修改没有竞争。
方法
C++方面
#include <windows.h>
//创建互斥锁
HANDLE mutexHandle;
mutexHandle = CreateMutex(NULL, FALSE, L"myLockName");
//在需要互斥操作的地方:
//get Mutex,此处INIFINITE表示无限等待,可用有限ms数替代,使得代码更可靠
WaitForSingleObject(mutexHandle, INFINITE);
//以下是需要保护单线程操作的代码
//以上是需要保护单线程操作的代码
//release Mutex
ReleaseMutex(mutexHandle);
C#方面
using System;
using System.Threading;
//创建互斥锁
var myMutex = new Mutex(false, "myLockName");
//在需要互斥操作的地方:
//get Mutex,此处-1表示无超时限制,可用有限ms数替代,使得代码更可靠
myMutex.WaitOne(-1);
//以下是需要保护单线程操作的代码
//以上是需要保护单线程操作的代码
//release Mutex
myMutex.ReleaseMutex();