c11制定了乙個標準的執行緒庫threads.h,但部分編譯器不支援它。
官方api列表:
這裡列出幾個常用api:
pthread_t // 一種資料型別,用於儲存執行緒id
intpthread_create
(pthread_t *id,
// 傳入乙個pthread_t型別的變數的位址
const pthread_attr_t * attr,
// 傳入執行緒的屬性(傳入null則是預設屬性)
void*(
*)(void*)
,// 傳入要執行的函式名
void
*arg)
;// 傳入要執行的函式的引數(沒有引數則填null,有多個則封裝成乙個結構體)
功能:建立乙個執行緒來執行乙個函式。
執行緒建立成功後會將該執行緒的id儲存到變數id中,並返回0。執行緒建立失敗時會返回非零值。
要執行的函式應該定義成 void
*fun
(void
*arg) 的格式。
intpthread_join
(pthread_t id,
void
**retval)
; 功能:暫停當前執行緒的執行,等待id所指的執行緒終止。當它終止之後,其返回值會儲存在retval變數中。
intpthread_cancel
(pthread_t id)
; 功能:向某個執行緒傳送取消請求,請它結束執行。
目標執行緒可能立即終止,也可能稍後終止,也可能忽略取消請求。
這裡建立兩個執行緒,分別執行兩個函式:
#include
#include
void
*fun1()
typedef
struct
horse;
void
*fun2
(void
*p)int
main()
; rc =
pthread_create
(&id,
null
, fun2,
&horse);if
(rc)
puts
("failed to create the thread fun2().");
// 阻塞主線程的執行,以免主線程執行結束時提前終止子執行緒
pthread_join
(id,
null);
puts
("main() end.");
return0;
}
編譯執行:
學習筆記 windows下,用c語言來建立執行緒
include include typedef void handle define semaphore handle define threadhandle handle define threadprocess dword winapi define threadreturn 0 define ...
C語言 用malloc 建立動態陣列
因本人才疏學淺,見識淺薄,有不當之處望指正,謝謝!當我們建立陣列時,不允許在程式執行時選擇陣列的大小和分配記憶體。如果n是乙個整形變數。double a n c99以前不允許,n是變數 但是,可以 a double malloc n sizeof double 允許 關於記憶體分配。所有程式都必須預...
用 RNN 建立語言模型
今天來看迴圈神經網路的乙個重要的應用 語言模型。什麼是語言模型?語言模型的應用?為什麼用基於 rnn 的語言模型?rnn 是如何實現語言模型的?rnn 是如何實現 character level 語言模型的?character level 語言模型的具體應用 生成莎士比亞風格的文字 語言模型,它的任...