爲什麼我們需要boost :: thread_specific_ptr,換句話說,沒有它,我們不能輕易做什麼?爲什麼我們需要boost :: thread_specific_ptr?
我可以看到爲什麼pthread提供了pthread_getspecific()等等。這些函數對於在死線之後進行清理非常有用,並且可以方便地從C風格函數中調用(顯而易見的方式是將指針傳遞到指向某些內存在創建線程之前分配)。
相比之下,boost:thread的構造函數按值接受一個可調用的類,並且該類中的所有非靜態變量在線程複製後都變爲線程局部變量。我看不出爲什麼我想要使用boost :: thread_specific_ptr優先於類成員,而不是我想在OOP代碼中使用全局變量。
我是否可怕地誤解了任何東西?請舉一個非常簡短的例子。非常感謝。
只是爲了增加我的2美分:它也被稱爲「線程本地存儲」,在許多優雅的多線程優化中很有用 –
@安迪 - 正確。我已經看到一個例子,數值分析代碼使用線程局部隨機數發生器。 –
@Steve Townsend:非常好,非常感謝您的回答。換句話說,我有什麼理由要同時使用boost :: thread和boost :: thread_specific_ptr? – Joe