c語言thread函數(shù) Thread函數(shù)

C語言的_beginthread函數(shù)老是類型不兼容怎么辦?

你問題中函數(shù)_beginthread是windows下創(chuàng)建線程并立即執(zhí)行的函數(shù):

嘉峪關(guān)網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站開發(fā)等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)公司2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

一、直接運行至程序結(jié)束或調(diào)用_endthread函數(shù)結(jié)束進程。

二、三個參數(shù)分別是執(zhí)行的函數(shù)、新線程堆棧大?。ㄒ话銈?)、傳遞給新線程的參數(shù)列表(不需要就傳NULL)。

三、該函數(shù)需要頭文件process.h。

四、調(diào)用函數(shù)mousemove寫在main下面,要先申明。

五、main是主線程,在創(chuàng)建進程之后應(yīng)使用循環(huán)、輸入或其他函數(shù)確保主線程運行。否則像你上面這樣寫,創(chuàng)建子線程后,主線程就運行結(jié)束了。

六、子線程函數(shù)死循環(huán)定位鼠標,至少給個結(jié)束方式吧。

下面是按你代碼寫的演示,按任意鍵結(jié)束程序:

#includestdio.h

#includewindows.h

#includeprocess.h

#includeconio.h

void mousemove();

int main()

{

_beginthread(mousemove,0,NULL);

getch();

printf("主進程結(jié)束\n");

return 0;

}

void mousemove()

{

while(1) {

? SetCursorPos(800,600);

? printf("子線程執(zhí)行中\(zhòng)n");

}

}

TC(C語言)中的多線程

可以不用。用C語言的計數(shù)器就好,不過比較麻煩。。。

如果用多線程,你首先需要了解線程的含義,另外編譯的時候需要加參數(shù),

編程的部分比較簡單,頭文件需要:

#include process.h

然后創(chuàng)建線程使用函數(shù):

_beginthread()

銷毀線程函數(shù):

_endthread()

TC3.0也就是增加了個鼠標,修改了一些bug,更新了一下界面而已,編譯器是和2.0一樣的。

c語言怎么創(chuàng)建線程和使用

1、添加線程相關(guān)的頭文件:#includepthread.h

2、線程創(chuàng)建函數(shù)是pthread_create()函數(shù),該函數(shù)的原型為:

int?pthread_create(pthread_t?*thread,pthread_attr_t?*attr,void*?(*start_routine)(void*),void?*arg);

3、線程退出函數(shù)是pthread_exit()函數(shù),該函數(shù)的原型為:

void?pthread_exit(void?*retval);

創(chuàng)建線程的示例程序如下:

/*

**程序說明:創(chuàng)建線程函數(shù)pthread_create()函數(shù)的使用。

*/

#include?stdio.h

#include?pthread.h

#include?unistd.h

#include?stdlib.h

#include?string.h

//打印標識符的函數(shù)

void?print_ids(const?char?*str)

{

pid_t?pid; //進程標識符

pthread_t?tid; //線程標識符

pid=getpid(); //獲得進程號

tid=pthread_self(); //獲得線程號

printf("%s?pid:%u?tid:%u?(0x%x)\n",

str,(unsigned?int)pid,(unsigned?int)tid,(unsigned?int)tid);?//打印進程號和線程號

}

//線程函數(shù)

void*?pthread_func(void?*arg)

{

print_ids("new?thread:"); //打印新建線程號

return?((void*)0);

}

//主函數(shù)

int?main()

{

int?err;

pthread_t?ntid; //線程號

err=pthread_create(ntid,NULL,pthread_func,NULL); //創(chuàng)建一個線程

if(err?!=?0)

{

printf("create?thread?failed:%s\n",strerror(err));

exit(-1);

}

print_ids("main?thread:"); //打印主線程號

sleep(2);

return?0;

}

vc編程中的thread什么意思

是線程

多線程概述

進程和線程都是操作系統(tǒng)的概念。進程是應(yīng)用程序的執(zhí)行實例,每個進程是由私有的虛擬地址空間、代碼、數(shù)據(jù)和其它各種系統(tǒng)資源組成,進程在運行過程中創(chuàng)建的資源隨著進程的終止而被銷毀,所使用的系統(tǒng)資源在進程終止時被釋放或關(guān)閉。

線程是進程內(nèi)部的一個執(zhí)行單元。系統(tǒng)創(chuàng)建好進程后,實際上就啟動執(zhí)行了該進程的主執(zhí)行線程,主執(zhí)行線程以函數(shù)地址形式,比如說main或WinMain函數(shù),將程序的啟動點提供給Windows系統(tǒng)。主執(zhí)行線程終止了,進程也就隨之終止。

每一個進程至少有一個主執(zhí)行線程,它無需由用戶去主動創(chuàng)建,是由系統(tǒng)自動創(chuàng)建的。用戶根據(jù)需要在應(yīng)用程序中創(chuàng)建其它線程,多個線程并發(fā)地運行于同一個進程中。一個進程中的所有線程都在該進程的虛擬地址空間中,共同使用這些虛擬地址空間、全局變量和系統(tǒng)資源,所以線程間的通訊非常方便,多線程技術(shù)的應(yīng)用也較為廣泛。

多線程可以實現(xiàn)并行處理,避免了某項任務(wù)長時間占用CPU時間。要說明的一點是,目前大多數(shù)的計算機都是單處理器(CPU)的,為了運行所有這些線程,操作系統(tǒng)為每個獨立線程安排一些CPU時間,操作系統(tǒng)以輪換方式向線程提供時間片,這就給人一種假象,好象這些線程都在同時運行。由此可見,如果兩個非常活躍的線程為了搶奪對CPU的控制權(quán),在線程切換時會消耗很多的CPU資源,反而會降低系統(tǒng)的性能。這一點在多線程編程時應(yīng)該注意。

Win32 SDK函數(shù)支持進行多線程的程序設(shè)計,并提供了操作系統(tǒng)原理中的各種同步、互斥和臨界區(qū)等操作。Visual C++ 6.0中,使用MFC類庫也實現(xiàn)了多線程的程序設(shè)計,使得多線程編程更加方便。

三、Win32 API對多線程編程的支持

Win32 提供了一系列的API函數(shù)來完成線程的創(chuàng)建、掛起、恢復、終結(jié)以及通信等工作。下面將選取其中的一些重要函數(shù)進行說明。

1、HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,

DWORD dwStackSize,

LPTHREAD_START_ROUTINE lpStartAddress,

LPVOID lpParameter,

DWORD dwCreationFlags,

LPDWORD lpThreadId);

該函數(shù)在其調(diào)用進程的進程空間里創(chuàng)建一個新的線程,并返回已建線程的句柄,其中各參數(shù)說明如下:

lpThreadAttributes:指向一個 SECURITY_ATTRIBUTES 結(jié)構(gòu)的指針,該結(jié)構(gòu)決定了線程的安全屬性,一般置為 NULL;

dwStackSize:指定了線程的堆棧深度,一般都設(shè)置為0;

lpStartAddress:表示新線程開始執(zhí)行時代碼所在函數(shù)的地址,即線程的起始地址。一般情況為(LPTHREAD_START_ROUTINE)ThreadFunc,ThreadFunc 是線程函數(shù)名;

lpParameter:指定了線程執(zhí)行時傳送給線程的32位參數(shù),即線程函數(shù)的參數(shù);

dwCreationFlags:控制線程創(chuàng)建的附加標志,可以取兩種值。如果該參數(shù)為0,線程在被創(chuàng)建后就會立即開始執(zhí)行;如果該參數(shù)為CREATE_SUSPENDED,則系統(tǒng)產(chǎn)生線程后,該線程處于掛起狀態(tài),并不馬上執(zhí)行,直至函數(shù)ResumeThread被調(diào)用;

lpThreadId:該參數(shù)返回所創(chuàng)建線程的ID;如果創(chuàng)建成功則返回線程的句柄,否則返回NULL。

2、DWORD SuspendThread(HANDLE hThread);

該函數(shù)用于掛起指定的線程,如果函數(shù)執(zhí)行成功,則線程的執(zhí)行被終止。

3、DWORD ResumeThread(HANDLE hThread);

該函數(shù)用于結(jié)束線程的掛起狀態(tài),執(zhí)行線程。

4、VOID ExitThread(DWORD dwExitCode);

該函數(shù)用于線程終結(jié)自身的執(zhí)行,主要在線程的執(zhí)行函數(shù)中被調(diào)用。其中參數(shù)dwExitCode用來設(shè)置線程的退出碼。

5、BOOL TerminateThread(HANDLE hThread,DWORD dwExitCode);

一般情況下,線程運行結(jié)束之后,線程函數(shù)正常返回,但是應(yīng)用程序可以調(diào)用TerminateThread強行終止某一線程的執(zhí)行。各參數(shù)含義如下:

hThread:將被終結(jié)的線程的句柄;

dwExitCode:用于指定線程的退出碼。

使用TerminateThread()終止某個線程的執(zhí)行是不安全的,可能會引起系統(tǒng)不穩(wěn)定;雖然該函數(shù)立即終止線程的執(zhí)行,但并不釋放線程所占用的資源。因此,一般不建議使用該函數(shù)。

6、BOOL PostThreadMessage(DWORD idThread,

UINT Msg,

WPARAM wParam,

LPARAM lParam);

該函數(shù)將一條消息放入到指定線程的消息隊列中,并且不等到消息被該線程處理時便返回。

idThread:將接收消息的線程的ID;

Msg:指定用來發(fā)送的消息;

wParam:同消息有關(guān)的字參數(shù);

lParam:同消息有關(guān)的長參數(shù);

調(diào)用該函數(shù)時,如果即將接收消息的線程沒有創(chuàng)建消息循環(huán),則該函數(shù)執(zhí)行失敗。

C語言怎么寫線程代碼

通常使用CreateThread函數(shù)來創(chuàng)建新的線程.(Unix下使用pthread_create函數(shù))

首先指出,線程與線程之間,是并列關(guān)系,不會存在"父子線程"的概念.

在Windows平臺下,CreateThread函數(shù)包含在 Windows.h 文件內(nèi),包含此文件即可正常使用.

以下為CreateThread函數(shù)的聲明:

HANDLE CreateThread(

LPSECURITY_ATTRIBUTES lpThreadAttributes,//指向安全性屬性描述結(jié)構(gòu)體的

//指針,通??梢院雎缘?

SIZE_T dwStackSize,//指定新線程初始的棧大小,若不關(guān)心,可以用0填充,來要求使用

//默認值

LPTHREAD_START_ROUTINE lpStartAddress,//用來充當線程的函數(shù)的指針.

LPVOID lpParameter,//要傳遞給函數(shù)的參數(shù),這個值本身就是那個參數(shù),而不是參數(shù)的地址

DWORD dwCreationFlags,//創(chuàng)建的方式,0表示正常,創(chuàng)建后立即開始運行

LPDWORD lpThreadId//用來接受函數(shù)反饋的線程ID的指針.

);

用來充當新的線程的函數(shù)格式:

DWORD WINAPI ThreadProc(LPVOID);

CreateThread函數(shù)若成功了,返回新線程的句柄,若失敗了,則返回NULL.

若用CREATE_SUSPENDED填充dwCreation Flags則創(chuàng)建的線程先掛起來,并不直接開始運行,要用ResumeThread函數(shù)恢復線程,才能繼續(xù)運行.

當前題目:c語言thread函數(shù) Thread函數(shù)
網(wǎng)站網(wǎng)址:http://muchs.cn/article16/docdsgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機、全網(wǎng)營銷推廣、品牌網(wǎng)站設(shè)計營銷型網(wǎng)站建設(shè)、網(wǎng)站制作、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化