工作中線程的使用

2022-05-04 19:18:13 字數 1736 閱讀 4411

1.handle createthread(

lpsecurity_attributes lpthreadattributes, // sd

size_t dwstacksize,                       // initial stack size

lpthread_start_routine lpstartaddress,    // thread function

lpvoid lpparameter,                       // thread argument

dword dwcreationflags,                    // creation option

lpdword lpthreadid                        // thread identifier

lpthreadattributes 指向security_attributes結構體的指標,這裡可以傳遞null。

dwstacksize 設定執行緒初始棧的大小,即執行緒可以將多少位址空間用於它自己的棧,以位元組為單位。系統會把這個 引數值四捨五入為最接近的頁面大小。頁面是系統 管理記憶體時使用的記憶體單位,不同cpu其頁面大小不同,x86使用的頁面大小是48kb。當保留位址空間的一塊區域時,系統要確保該區域的大小是系統頁面大小的倍數。例如,希望保留10kb的位址空間區域,系統會自動對這個請求進行四捨五入,是保留的區域大小是 頁面大小的倍數,在x86平台下,系統將保留一塊12kb的區域,即4kb的倍數。如果這個值為0,或者小於預設的提交大小,那麼預設將使用與呼叫該函式的執行緒相同的棧空間大小。

lpstartaddress  指向應用程式定義的lpthread_start_routine型別的函式指標,這個函式將由新執行緒執行,表明新執行緒的起始位址。我們知道main函式是主線程的入口函式,同樣地,新建立的執行緒也需要有乙個入口函式,這個函式的位址就由此引數指定。這就要求在程式中定義乙個 函式作為新執行緒的入口函式,該函式的名任意,但函式型別必須遵照下述宣告形式 :

dword winapi threadproc(lpvoid lpparamter)

即新執行緒入口 函式有乙個lpvoid型別的引數,並且返回值 是dword型別。

lpparamter

對main函式來說,可以接受命令行引數。同樣,我們可以通過這個引數給建立的新執行緒傳遞引數 。該引數提供了一種將初始值傳遞給執行緒函式的手段。這個引數的值既可以是乙個數值,也可以是乙個指向其他資訊的指標。

dwcreateflags 設定用於控制線程建立的附件標記。它可以是兩個值中的乙個:create_suspended或者0。如果該值是create_suspended,那麼執行緒建立後處於暫停狀態,直到程式呼叫了resumethead函式為止;如果該值是0,那麼執行緒在建立之後就 立即執行。

lpthreadid

這個引數是乙個返回值,它指向乙個變數,用來接收執行緒id。當建立乙個執行緒時,系統會為該執行緒分配乙個id

工作總結:

1.通過收信按鈕響應函式裡面,建立獲取信封頭的執行緒,當此執行緒執行完畢後,通過視窗的this指標向視窗傳送自定義訊息,this->sendmessage(wm_user,0,0);

dword dwthreadid = 0;

//開啟執行緒 ,儲存信封頭

handle hthread = createthread(null,0,&cduiframewnd::fetchenvelopethreadproc,(lpvoid)this,0,&dwthreadid);

closehandle(hthread);

Python中線程的使用

併發 多個任務同一時間段進行 並行 多個任務同一時刻進行 執行緒的實現 執行緒模組 python通過兩個標準庫 thread 和threading,提供對執行緒的支援 threading對 thread進行了封裝 因此在實際的使用中我們一般都是使用threading threading模組中提供了t...

Java中線程池的使用

1 threadpoolexecutor類構造器可以設定的引數 核心執行緒數 如果執行緒池中的執行緒數小於核心執行緒數,當新任務提交時,會新建乙個執行緒去處理該任務。最大執行緒數 如果執行緒池中的執行緒數大於等於核心執行緒數,但是小於最大執行緒數,當新任務提交時,會將任務加入任務佇列,如果任務佇列已...

python 中線程池的使用

python中已經有了threading模組,為什麼還需要執行緒池呢,執行緒池又是什麼東西呢?在介紹執行緒同步的訊號量機制的時候,舉得例子是爬蟲的例子,需要控制同時爬取的執行緒數,例子中建立了20個執行緒,而同時只允許3個執行緒在執行,但是20個執行緒都需要建立和銷毀,執行緒的建立是需要消耗系統資源...