函式簡介
頭檔案
函式聲明
編譯連結參數
-lpthread
返回值
若執行緒創建成功,則返回0。若執行緒創建失敗,則返回出錯編號,並且*thread中的內容是未定義的。
返回成功時,由tidp指向的記憶體單元被設定為新創建執行緒的執行緒ID。attr參數用於指定各種不同的執行緒屬性。新創建的執行緒從start_rtn函式的地址開始運行,該函式只有一個萬能指針參數arg,如果需要向start_rtn函式傳遞的參數不止一個,那么需要把這些參數放到一個結構中,然後把這個結構的地址作為arg的參數傳入。
linux下用C語言開發多執行緒程式,Linux系統下的多執行緒遵循POSIX執行緒接口,稱為pthread。
參數
第一個參數為指向執行緒標識符的指針。
第二個參數用來設定執行緒屬性。
第三個參數是執行緒運行函式的起始地址。
最後一個參數是運行函式的參數。
注意事項
因為pthread並非Linux系統的默認庫,而是POSIX執行緒庫。在Linux中將其作為一個庫來使用,因此加上 -lpthread(或-pthread)以顯式連結該庫。函式在執行錯誤時的錯誤信息將作為返回值返回,並不修改系統全局變數errno,當然也無法使用perror()列印錯誤信息。
示例
輸出執行緒標識符
$ gcc main.c -o main -std=c99 -pthread
$ ./main
main thread: pid 13073 tid 3077572816 (0xb77008d0)
new thread: pid 13073 tid 3077569392 (0xb76ffb70)
簡單的執行緒程式
$ gcc thread_test.c -o thread_test -std=c99 -pthread
$ ./thread_test
Creating thread 0
Creating thread 1
Creating thread 2
Creating thread 3
Creating thread 4
Creating thread 5
Creating thread 6
Creating thread 7
Hello from thread 8
Hello from thread 8
Hello from thread 8
Hello from thread 8
Hello from thread 8
Hello from thread 8
Hello from thread 8
Hello from thread 8