win32相关对共享资源操作几种方式

来源:互联网 发布:淘宝店铺宝贝上架教程 编辑:程序博客网 时间:2024/06/06 04:56

项目中编写了一个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);



0 0
原创粉丝点击