我的問題是,什麼是pthread_create函數的格式和它調用的函數,在指針等方面?儘管我需要澄清我在這方面的知識,但我可以將頭部包裹在變量指針中,但是函數指針會變得很糟糕。pthread_create函數格式和指針 - C Linux的POSIX庫
我理解的首選格式是
void *threadfunc(void *arg);
int main()
{
pthread_t threadinfo;
int samplearg;
pthread_create(&threadinfo, NULL, threadfunc, &samplearg);
}
然而,這會產生一個編譯器警告的ThreadFunc不是返回一個值,所以顯然是*一些是關於什麼的ThreadFunc返回時,函數的不是一個特點呢?
我也看到定義爲功能和格式在pthread_create像這樣:
void threadfunc(void *arg);
pthread_create(&threadinfo, NULL, (void *)threadfunc, &samplearg);
這兩個是正確的,或者是他們功能上等同?有人能向我解釋指向函數的指針的機制嗎?
最後一個問題,它會工作,在for循環產生多個線程,初始化int samplearg
爲線程唯一值,然後將其傳遞到pthread_create(...)
?我知道samplearg
的範圍在threadfunc
之內,我只是在檢查以確定C不遵循典型範圍規則 - 因爲samplearg
在for()
循環內創建,並且在for()
迭代後通常會超出範圍循環,並且實際變量本身被傳遞而不是值。我會測試自己,但可能有一點你可以啓發我,在遠程Linux機器上開發對我來說有點麻煩。
pthread_create()返回一個int。從手冊頁:返回值 如果成功,pthread_create()函數將返回零;否則,應返回一個錯誤編號以指示錯誤。 –
@PeteWilson - 他不是在談論pthread_create()的返回值@ –
@Brian Roach--所以他不是!感謝提貨。 –