我想創建n個線程。然後向它們傳遞一個結構體以用數據填充該結構體;例如bool來跟蹤線程是否完成或被終止信號中斷。創建線程並將結構傳遞給它
n = 5; // For testing.
pthread_t threads[n];
for(i=0; i<n; i++)
pthread_create(&threads[i], &thread_structs[i], &functionX);
假設thread_structs已經配對了。
functionX()
注意功能沒有參數。我應該爲結構創建一個參數嗎?或者我傳遞的結構是好的?
我該如何指向剛剛傳遞給函數的結構?
爲什麼你會傳遞它作爲void而不是結構類型? –
「void *」是泛型指針類型 - 所有指針可衰減爲「void *」,而不會出現轉換錯誤。這允許pthread_create的通用定義,而不必知道定製/未來類型。如果它被定義爲一個'thread_struct *'並且你想傳遞一個指向int的指針,那麼你就必須進行一次強制轉換。 – kfsone
或者更簡單的說法:取一個void *是一種說法,它會指向任何東西。不利的一面是,它實際上是以void *的形式到達的,而您必須將其重新放回到界面的一側。這應該提醒你「這可能是一個指向任何東西,要小心」 – kfsone