#
include
intpthread_create
(pthread_t
*restrict thread,
const
pthread_attr_t
*restrict attr,
void*(
*start_routine)
(void*)
,void
*restrict arg
)
0,失敗返回錯誤號。
0,失敗返回
-1,而錯誤號儲存在全域性變數
errno
中,而庫
的函式都是通過
,雖然每個執行緒也都有乙個
errno
,但這是為了相容其它函式介面而提供的,
pthread
庫本身並不使用它,通過返回值返回錯誤碼更加清晰。
成功返回後,新建立的執行緒的
id被填寫到
thread
引數所指向的記憶體單元
thread_t
這個型別有不同的實現,它可能是乙個整數值,也可能是乙個結構體,也可能是乙個位址,所以不能簡單地當成整數用
printf
列印,呼叫
可以返回當前執行緒的id。
是執行緒屬性。
:使用者執行緒函式指標,引數型別和返回型別都有使用者定義。
的引數。
pthread_create
的錯誤碼不儲存在
errno
中,因此不能直接用
perror(3)
列印錯誤資訊,可以先用
strerror(3)
把錯誤碼轉換成錯誤資訊再列印。
exit
或_exit
,則整個程序的所有執行緒都終止。
:arial;color:black">posix
arial;mso-bidi-font-family:arial;color:black">的執行緒終止有兩種情況:正常終止和非正常終止。
arial;color:black">
arial;mso-bidi-font-family:arial;color:black">
從執行緒函式
return
。這種方法對主線程不適用,從
main
函式return
相當於呼叫
exit。
執行緒可以呼叫
pthread_exit
終止自己。
乙個執行緒可以呼叫
pthread_cancel
終止同一程序中的另乙個執行緒。
#
include
void
pthread_exit
(void
*value_ptr)
;void
pthread_cancel
(pthread_t tid)
;
pthread_exit
或者return
返回的指標所指向的記憶體單元必須是全域性的或者是用
malloc
#
include
intpthread_join
(pthread_t thread,
void
**value_ptr)
;int
pthread_detach
(pthread_t tid)
;
執行緒以不同的方法終止,通過
pthread_join
得到的終止狀態是不同的,總結如下: 如果
thread
執行緒通過
return
返回,value_ptr
所指向的單元裡存放的是
thread
執行緒函式的返回值。 如果
thread
執行緒被別的執行緒呼叫
pthread_cancel
異常終止掉,
value_ptr
所指向的單元裡存放的是常數
pthread_canceled。
如果thread
執行緒是自己呼叫
pthread_exit
終止的,
value_ptr
所指向的單元存放的是傳給
pthread_exit
的引數。
thread
執行緒的終止狀態不感興趣,可以傳
null
給value_ptr
引數。 0
給主人留下些什麼吧!~~
執行緒建立 終止
乙個程序中的所有執行緒都可以訪問程序的組成部件,如檔案描述符和記憶體。不管在什麼情況下,只要單個資源需要在多個使用者間共享,就必須處理一致性問題。每個執行緒都包含表示執行環境所必須的資訊,其中包括程序中表示執行緒的執行緒id,一組暫存器檔案,棧,排程優先順序和策略,訊號遮蔽字,errno變數以及執行...
執行緒控制(一) 執行緒的建立與終止
引言 我們先在學的執行緒都是使用者級庫執行緒 posix 我們通過基本的學習認識到了與執行緒有關的函式構成了乙個完整的系列,絕大多數的函式的名字都是以 pthread 打頭的,在使用這些函式的時候引入的標頭檔案是 pthread create函式 錯誤檢查 1 include 2 include 3...
執行緒 終止執行緒執行
stop 方法 缺點 強制終止會丟資料 不建議使用 public class myfile catch interruptedexception e 5秒後終止執行緒 t.stop 已過時,強制終止會丟資料 class myrunnable implements runnable catch int...