现在的位置: 首页 > 综合 > 正文

使用互斥对象CMutex实现不同的进程间通信

2013年08月11日 ⁄ 综合 ⁄ 共 862字 ⁄ 字号 评论关闭

使用CMutex对象可以在不同的进程的线程间实现资源的安全共享.

程序实例:
创建一个工作进程,使用CMutex锁定数据3秒,然后解除锁定,2秒后再次锁定并循环.开启多个进程,可以发现同时只有一个工作进程可以锁定数据

////////////////////////////////////////////////////////////////////////////
CMutex g_Mutex(FALSE, "Mutex1");
//在不同应用程序间实现线程的同步必须为互斥量取一个名字
UINT MutexThread(LPVOID pParam)
{
     HWND hwnd = (HWND)pParam;
     while(TRUE)
     {
          CString str;
          g_Mutex.Lock();
          str = "锁定数据";
          ::SetDlgItemText((HWND)pParam,IDC_EDIT1,str);
          ::Sleep(3000);
          g_Mutex.Unlock();
          str = "释放锁定";
          ::SetDlgItemText((HWND)pParam,IDC_EDIT1,str);
          ::Sleep(2000);
     }
     return 0;
}
/////////////////////////////////////////////////////////////////////////////
//启动线程代码
void CMutexProcessSynDlg::OnRun() 
{
     // TODO: Add your control notification handler code here
     HWND hWnd = GetSafeHwnd();

     //获取窗口句柄

     AfxBeginThread(MutexThread,hWnd);
     //产生新进程
     
}

抱歉!评论已关闭.