WEB开发网
开发学院软件开发VC 多线程编程之一——问题提出 阅读

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

 2007-03-17 22:00:03 来源:WEB开发网   
核心提示: 例程4 MultiThread4该例程测试在Windows下最多可创建线程的数目,建立一个基于对话框的工程MultiThread4,多线程编程之一——问题提出(8),在对话框IDD_MULTITHREAD4_DIALOG中加入一个按钮IDC_TEST和一个编辑框IDC_COUNT,按钮标题
例程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;
}

(未完待续)

上一页  3 4 5 6 7 8 

Tags:线程 编程 之一

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接