1. 程式人生 > >VC6.0下建立多執行緒的方法和注意的事項

VC6.0下建立多執行緒的方法和注意的事項

#include<stdio.h>
#include <process.h>
#include <stdio.h>
#include <windows.h>
DWORD _stdcall ThreadProc(LPVOID lpParameter)//執行緒執行函式
{
int si=100;
while(si>0)
{
printf("子執行緒輸出數字:%d\n",si--);
Sleep(1000);
}
return 0;
}


int main()
{
int mi=0;
CreateThread(NULL,0,ThreadProc,NULL,0,NULL);//建立一個執行緒,去執行ThreadProc函式

while(mi<100)
{
printf("主執行緒輸出數字:%d\n",mi++);
Sleep(1000);
}
return 0;

}

這一段程式碼沒問題,但是要將CreateThread()換成_beginthreadex()的話就會出錯!!!

#include<stdio.h>
#include <process.h>
#include <stdio.h>
#include <windows.h>
unsigned _stdcall ThreadProc1(LPVOID lpParameter)//執行緒執行函式1
{
int si=100;
while(si>0)
{
printf("子執行緒:%d\n",si--);
Sleep(1000);
}
return 0;
}


int main()
{
int mi=0;

HANDLE   hth1;
unsigned  uiThread1ID;
hth1 = (HANDLE)_beginthreadex( NULL, 0,ThreadProc1,NULL,  
                              CREATE_SUSPENDED,&uiThread1ID );
if(hth1 == NULL)
{
return FALSE;
}
else
{
ResumeThread(hth1);
}
while(mi<100)
{
printf("主執行緒輸出數字:%d\n\n",mi++);
Sleep(1000);
}
return 0;
}

執行之後會出現錯誤_beginthreadex()沒有定義。這時候需要你改變設定。

_beginthreadex不僅要加標頭檔案“process.h”還要設定工程屬性;

在VC6下用_beginthreadex編寫多執行緒程式時,不但要將<process.h>包含進來,而且還是設定工程屬性,選擇C/C++

一欄,在分類裡選擇Code Generation,在Use run-time library那一個欄選擇多執行緒版本(帶有Multithreaded的)就可以了。