📄 theade~2.h
字号:
// TheadExp2Dlg.h : 头文件
//
#include <afxmt.h>
//全局变量
//临界区对象
static CCriticalSection g_Cs;
//互斥区对象
static CMutex g_Mt;
//信号对象
static CSemaphore g_Sp(1,1);
//将要被两个线程访问的数据
static UINT Data=0;
static UINT OldData=0;
//循环次数
static UINT cnt=0;
//对话框窗口句柄,用于辅助线程同对话框主进程通讯
static HWND hDlg;
//事件对象,用于终止第一个线程
static CEvent g_EndTh1;
//事件对象,用于终止第二个线程
static CEvent g_EndTh2;
//记录用户选择的同步方式(使用信号对象、互斥区或临界区对象)
static UINT g_Sel=0;
//标识第一个线程是否结束
static BOOL g_Th1End=TRUE;
//标识第二个线程是否结束
static BOOL g_Th2End=TRUE;
//全局函数
//用于存储数据的函数,该函数被第一个线程所使用
static void SetData(UINT dat);
//用于读取数据的函数,该函数被第二个线程所使用
static UINT GetData(UINT dat);
//用于写数据的线程,即第一个线程的线程回调函数
UINT ThreadProcWt(LPVOID param);
//用于读数据的线程,即第二个线程的线程回调函数
UINT ThreadProcRd(LPVOID param);
#pragma once
// CTheadExp2Dlg 对话框
class CTheadExp2Dlg : public CDialog
{
// 构造
public:
CTheadExp2Dlg(CWnd* pParent = NULL); // 标准构造函数
void EnableSelection(BOOL end);
// 对话框数据
enum { IDD = IDD_THEADEXP2_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
HICON m_hIcon;
// 生成的消息映射函数
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public:
CButton m_BeginTh1;
CButton m_EndTh1;
CButton m_BeginTh2;
CButton m_EndTh2;
afx_msg void OnBnClickedThread1();
afx_msg void OnBnClickedEndThread1();
afx_msg void OnBnClickedThread2();
afx_msg void OnBnClickedEndThread2();
afx_msg void OnBnClickedRadioMutex();
afx_msg void OnBnClickedRadioSemaphores();
afx_msg void OnBnClickedRadioCritical();
afx_msg void OnBnClickedExit();
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -