关于多线程的那些事
1.線程函數執行完return后,不需要調用ExitThread或TerminateThread退出線程.
2.多線程操作一個listctrl控件是不會卡的,很順暢.
3.多線程如何控制線程個數呢?
DWORD dwThreadNum = 0; //總線程數DWORD WINAPI ThreadProc( LPVOID lpParameter) {CListTestThreadDlg *dlg = (CListTestThreadDlg*)lpParameter;CString strText;strText.Format(_T("%d"),dwThreadNum);int nItem = dlg->m_list.InsertItem(dlg->m_list.GetItemCount(),_T("xxx")); for (int i=0;i<=10;i++){strText.Format(_T("%d"),i);dlg->m_list.SetItemText(0,1,strText); Sleep(1000);}dwThreadNum--; //線程要結束了,線程數量減1//ExitThread(0);return 0; }//循環創建線程,限制線程最大數不大于10 DWORD WINAPI MyCreateThreadProc( LPVOID lpParameter) {while(true){if (dwThreadNum < 10){DWORD dwID;HANDLE hHandle = CreateThread(0,0,ThreadProc,lpParameter,0,&dwID);CloseHandle(hHandle);dwThreadNum++; //線程數+1} Sleep(10);}return 0; }//創建一個線程 void CListTestThreadDlg::OnBnClickedOk() {// TODO: 在此添加控件通知處理程序代碼DWORD dwID;HANDLE hHandle = CreateThread(0,0,MyCreateThreadProc,this,0,&dwID);CloseHandle(hHandle);}
?
總結
- 上一篇: 窗口重绘
- 下一篇: 远程协助TeamView软件 轻松控制计