我可以將struct傳入pthread_create作爲線程參數。可以通過線程修改pthread_create參數嗎?
但是有可能在線程中修改這個結構,這樣當線程終止時,主程序可以訪問這個結構來獲得修改後的數據嗎? 如果是這樣,我是否需要將結構強制轉換回線程中的void?
我可以將struct傳入pthread_create作爲線程參數。可以通過線程修改pthread_create參數嗎?
但是有可能在線程中修改這個結構,這樣當線程終止時,主程序可以訪問這個結構來獲得修改後的數據嗎? 如果是這樣,我是否需要將結構強制轉換回線程中的void?
是的 - 假設線程函數通過指針傳遞結構,您可以修改它指向的結構。
不 - 不需要將結構強制轉換回線程中的void;事實上,我不太清楚你在想什麼,但沒有必要這麼做。線程函數獲取一個void *
參數。它會將其轉換爲struct whatever *
;它可以參考。
只要確保任何其他線程都可以修改結構,那麼您正在協調更改。
是的,這是可能的,只是在線程完成之前不要觸摸數據。至少不是沒有保護。
感謝您的簡潔回答! – yongtw123