2011-09-24 20 views

回答

4

它有很多是線程安全的 - 攪拌等 - 但其中一些不是。查找一種方法應該是。關聯的對象可能不是。如果他們沒有明確記錄,那麼他們應該被視爲不是線程安全的。

查看運行時的源代碼。其中的評論可能是照亮的。如果還不是很清楚,請提交一份要求在文檔中進行澄清的錯誤。

+0

謝謝,這是照亮。現在是否有理由期望一個實施方法能夠使線程安全,在不久的將來它不會改變?我查看了http://opensource.apple.com/source/objc4/objc4-493.9/runtime/objc-references.mm,它利用自旋鎖來獲取/設置關聯參考。我將提交一份錯誤報告,要求提供更多文檔。 –

+0

假設在(已發佈的)API或運行時中記錄爲線程安全的任何實現將保持線程安全 - 儘管任何事情都是可能的,所以閱讀未來版本的發行說明總是一個好主意。 – matthias

+0

是的 - 目前故意線程安全的東西不太可能在未來會退化爲線程不安全,這是因爲那會倒退一步,並且會導致二進制兼容性問題。很明顯,正確的文件使合同變得更加強大。 – bbum