项目中编写了一个dll,这个dll是被web服务器端调用,dll中含有共享资源调用,由此涉及到进程与线程对共享资源的访问问题;
进程互斥相关操作,可以跨进程:
创建一个名字为none互斥对象,FALSE:表示用户无此信号互斥;TRUR表示用户拥有此信号互斥
HANDLE m_mutex;
m_mutex = ::CreateMutex(NULL, FALSE, ("none"));
//关闭互斥操作
::CloseHandle(m_mutex);
//释放当前线程拥有的互斥对象,以使其它线程可以拥有互斥对象,对被保护资源进行访问
::ReleaseMutex(m_mutex);
确保拥有互斥对象的线程对被保护资源的独自访问
DWORD d = WaitForSingleObject(m_mutex, INFINITE);
//打开某名称的互斥信号,
HANDLE m_hMutex = OpenMutex(MUTEX_ALL_ACCESS,FALSE, _T("jetchen"));
临界段(用在线程同步)
CRITICAL_SECTION gDlink_csCommunicationSync;
// initialize critical section
InitializeCriticalSection(&gDlink_csCommunicationSync);
// now it critical!
EnterCriticalSection(&gDlink_csCommunicationSync);
// release critical section
LeaveCriticalSection(&gDlink_csCommunicationSync);
DeleteCriticalSection(&gDlink_csCommunicationSync);