怎样保证一个线程不会重复创建

xinyancode 2010-11-05 07:15:55
怎样保证一个线程不会重复创建


我的多线程程序通过单击对话框上一个button来创建并启动一个线程


void CThreadTest_Dlg::OnBnClickedButtonStart()
{
//if the thread is already esist, how to do
if (!(pThread = AfxBeginThread( ThreadFunc, &Info )))
return FALSE;

TRACE("Thread started\n");
return TRUE;
}

如果我不停地点button,这个线程就会重复创建,重叠执行,然后再一个一个地结束,请问有什么办法保证只有一个这样的线程在执行,不让它重叠创建。

谢谢
...全文
526 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
visualwind 2010-11-05
  • 打赏
  • 举报
回复
线程不应该叫重复创建,而是不断地创建新线程。
可以添加一个线程句柄变量作为CThreadTest_Dlg的成员变量,创建线程前先用WaitForSingleObject判断这个句柄是否有信号,如果无信号就说明线程已经创建了并在运行中,如果有信号就说明线程未创建或者已经退出,再继续创建。
xinyancode 2010-11-05
  • 打赏
  • 举报
回复
奥,恍然大悟,给你加分
Eleven 2010-11-05
  • 打赏
  • 举报
回复
做个标记,比如BOOL类型,初始化默认为FALSE,点击过Button一次,就设置为TRUE。进入该函数时先判断一下就知道了

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧