多线程编程之一——问题提出

豆豆网   技术应用频道   2007年03月17日    社区交流

本文详细介绍多线程编程之一——问题提出

例程4 MultiThread4

  该例程测试在Windows下最多可创建线程的数目。

  建立一个基于对话框的工程MultiThread4,在对话框IDD_MULTITHREAD4_DIALOG中加入一个按钮IDC_TEST和一个编辑框IDC_COUNT,按钮标题为“测试” , 编辑框属性选中Read-only;

  在MultiThread4Dlg.cpp文件中进行如下操作:

  添加公共变量volatile BOOL m_bRunFlag=TRUE;

  该变量表示是否还能继续创建线程。

  添加线程函数:

DWORD WINAPI threadFunc(LPVOID threadNum)
{
  while(m_bRunFlag)
  {
    Sleep(3000);
  }
  return 0;
}
只要 m_bRunFlag 变量为TRUE,线程一直运行。

  双击按钮IDC_TEST,添加其响应消息函数:void CMultiThread4Dlg::OnTest()
{
  DWORD threadID;
  GetDlgItem(IDC_TEST)->EnableWindow(FALSE);
  long nCount=0;
  while(m_bRunFlag)
  {
    if(CreateThread(NULL,0,threadFunc,NULL,0,&threadID)==NULL)
    {
      m_bRunFlag=FALSE;
      break;
    }
    else
    {
      nCount++;
    }
  }
  //不断创建线程,直到再不能创建为止
  m_nCount=nCount;
  UpdateData(FALSE);
  Sleep(5000);
  //延时5秒,等待所有创建的线程结束
  GetDlgItem(IDC_TEST)->EnableWindow(TRUE);
  m_bRunFlag=TRUE;
}

(未完待续)

作者:韩耀旭    责编:豆豆技术应用

正在加载评论...