簡體   English   中英

為什么 pthread_exit 使用 void*?

[英]Why does pthread_exit use void*?

我最近開始使用 posix 線程,標准中參數類型的選擇讓我很好奇。 我一直無法回答為什么pthread_exit使用void*而不是int來返回線程狀態的問題? (與退出相同)。

我看到的唯一優點是它讓程序員可以定義他們想要的狀態(例如返回一個指向復雜結構的指針),但我懷疑它是否像這樣被廣泛使用。

似乎在大多數情況下,由於必要的強制轉換,這種選擇具有更多的開銷。

這不僅僅是狀態,它是線程的返回值。 使用指針允許線程返回指向動態分配的數組或結構的指針。

您無法真正將其與exit()參數進行比較,因為那是用於向操作系統發送狀態。 這故意非常簡單,以允許與許多操作系統的可移植性。

我看到的唯一優點是它讓程序員可以定義他們想要的狀態(例如返回一個指向復雜結構的指針),但我懷疑它是否像這樣被廣泛使用。

的確,這就是原因。 而且它可能沒有被廣泛使用(例如,您可以通過其他方式傳遞值,例如傳遞給線程 function 的指針、具有同步的全局變量等)。 但是如果你有一個像void pthread_exit(int); ,它帶走了返回指針的能力。 所以void pthread_exit(void*); 是一種更靈活的設計。

似乎在大多數情況下,由於必要的強制轉換,這種選擇具有更多的開銷。

在大多數情況下,根本不使用它,因為常見的方法是什么都不返回,即pthread_exit(NULL); . 因此,只有在返回指針(結構等)時才重要,在這種情況下,不需要轉換為void * ,因為任何指針類型都可以在沒有顯式轉換的情況下轉換為void *

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM