C++多线程编程之四

2014-11-24 03:18:20 · 作者: · 浏览: 0

例程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;


}