MFC中的多线程设计
来源:互联网 发布:交友网站软件下载 编辑:程序博客网 时间:2024/05/16 07:28
1 要分析哪些任务部分是可以同时执行,相互不受影响的。对最耗时的部分进行多线程运算。
2 对共同使用的变量要加锁。
3 尽量不要在新线程里面进行UI界面的操作。
HANDLE m_hTestThread[TEST_DEV_THREAD_NUM];
CDevScanToolDlg::CDevScanToolDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDevScanToolDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
for (int i=0;i<TEST_DEV_THREAD_NUM;++i)
{
m_hTestThread[i] = NULL;
}
m_bStopWorkerThread = FALSE;
m_lFinish=0;
m_lProgressPos=0;
}
void CDevScanToolDlg::OnBnClickedButtonStart()
{
......
for (int i=0;i<TEST_DEV_THREAD_NUM;++i)
{
m_hTestThread[i] = (HANDLE)_beginthreadex(NULL,0,FuncTestDevThread,this,0,NULL);
}
......
}
unsigned int CALLBACK FuncTestDevThread( void* pParam )
{
CDevScanToolDlg* pDlg = (CDevScanToolDlg*)pParam;
if (NULL != pDlg)
{
pDlg->TestDeviceInfoThread();
}
return 0;
}
void CDevScanToolDlg::TestDeviceInfoThread()
{
while (!m_bStopWorkerThread)
{
.......
}
}
void CDevScanToolDlg::OnCancel()
{
m_bStopWorkerThread = TRUE;
for (int i=0;i<TEST_DEV_THREAD_NUM;++i)
{
if (m_hTestThread[i])
{
WaitForSingleObject(m_hTestThread[i],INFINITE);
CloseHandle(m_hTestThread[i]);
m_hTestThread[i] = NULL;
}
}
if (m_hEvent)
{
CloseHandle(m_hEvent);
m_hEvent = NULL;
}
CDialog::OnCancel();
}
- MFC中的多线程设计
- MFC多线程的进度条设计
- Win32多线程设计之MFC的多线程
- 三. MFC中的多线程开发
- MFC开发中的多线程封装
- 浅谈MFC中的设计模式
- MFC 中的设计模式分析
- 浅谈MFC中的设计模式
- MFC 中的设计模式分析
- 浅谈MFC中的设计模式
- 浅谈MFC中的设计模式
- MFC应用程序中的多线程与UI窗口
- MFC中的多线程(Work线程)
- MFC 中的多线程(Work线程)(转)
- MFC 中的多线程(Work线程)
- 使用MFC中的AfxBeginThread创建多线程
- [原创]MFC中的多线程处理问题总结
- MFC应用程序中的多线程与UI窗口
- android 开源项目下载
- noj 1560 Let Slimes Grow Up(线段树,lazy,暂未A)
- Fragment与Viewpager及FragmentStatePagerAdapter
- leetcode集锦 ( 不定期更新)
- C++ primer 读书笔记(4)
- MFC中的多线程设计
- javascript函数
- boost BOOST_IDENTITY_TYPE
- 网站二级导航标题特效
- js中call与apply用法
- RHEL6:中文环境切换成英文环境
- SQLServer内置函数
- JavaScript系统内置函数大全
- servlet 过滤器和监听器总结