字体
第(5/6)页
关灯
   存书签 书架管理 返回目录
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作,具体介
上一页 目录 下一页