線程基本操作 (3)線程的創(chuàng)建
創(chuàng)建線程的函數(shù)原型:
(線程就好比一個人,創(chuàng)建一個線程,就相當于給一個新生兒上戶口.需要填寫一些必要的信息)
上面有 tid ,就是線程的id號.linux中文件,賬戶,組 和線程,都是用 id 編號進行區(qū)分的.
(這個是系統(tǒng)分配的,不用指定,系統(tǒng)能分配就不自己指定,因為自己指定會可能重復和沖突)
里面用到了函數(shù)指針,指向一個函數(shù).線程創(chuàng)建完之后,就會進入這個函數(shù)中,這個函數(shù)是線程運行的第一個函數(shù),相當于線程的"主函數(shù)".
linux中返回通??赡苡袃煞N:(因為歷史原因.linux中的函數(shù)返回值通常有兩種形式)
第一種: 返回-1,返回errno,這種方式并不好,因為是全局變量,可能還沒有來及用,就被沖刷掉了.用perror()
第二種: 返回 error number 這種是好的.是宏...用strerror? (如果自己編程,推薦仿照這種)
線程的函數(shù),都是第二種方式返回錯誤的,所以判斷線程相關的,都需要用strerror()進行報錯.
用strerror()報錯,需要包含頭文件 #include <string.h> .因為strerror報錯會返回字符串的提示.

線程的調度,取決于調度器策略,
可能看不見那個線程輸出...
因為還沒有來得及調度.
雙核真機可能會看到.
或者給程序加一個sleep,就可以看到.
因為返回值是void * 所以返回是NULL.
父子進程也不知道誰會先調度...
標簽: