C++多线程编程:测试 Windows 下最大线程数
该例程测试在 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;
}

