ND_BROADCAST,
WM_MyMessage,
(WPARAM) m_hWnd,
0);
}
}
}
(8)响应自定义消息
响应自定义的消息WM_MyMessage,代码如下:
LRESULT CIPCDemoDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
// 如果是线程自己发送的消息, 则不作响应
if ( wParam == (WPARAM) m_hWnd )
return 0;
// 从内存映shè文件读取文本, 设置自己文本框的文本
if ( m_pViewOfFile )
{
// 从内存映shè文件读取文本
TCHAR s[dwMemoryFileSize];
lstrcpy(s, (LPCTSTR) m_pViewOfFile);
枫叶文学网www.fywxw.com
第9 章 多线程
·233·
// 将文本写入文本框
m_bNotify = FALSE;
m_input.SetWindowText(s);
m_bNotify = TRUE;
}
return 0;
}
(9)释放资源
改写对话框退出消息WM_DESTROY 的响应函数OnDestroy,释放资源,代码如下:
void CIPCDemoDlg::OnDestroy()
{
CDialog::OnDestroy();
// TODO: Add yourcomssage handler code here
if ( m_hFileMapping )
{
if ( m_pViewOfFile )
{
UnmapViewOfFile(m_pViewOfFile); // 释放内存映shè视图
}
// 释放内存映shè资源
CloseHandle(m_hFileMapping);
}
}
(10)运行结果
运行多个程序,改变文本框的内容,界面如图9-3 所示。
图9-3 程序运行界面
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·234·
9.3.5 线程的同步
在多线程程序设计中,经常会出现两个或多个线程使用一个公共变量,或者多个线程共
享一些公共存储区的情况。凡是涉及到共享资源的情况都有可能会引起程序的错误。为了解
决这些问题,Windows 提供了大量线程的同步方法,例如变量锁、临界区、信号量、事件对
象、互斥对象等。
1.互锁cāo作
一个或两个变量的互锁cāo作是最简单的同步原语。Win32 提供了7 个具有线程安全xìng的
原子cāo作,具体介