回答
不,automatic properties不是線程安全的。它們不過是句法糖;編譯器會自動生成專用的後備字段,就像你手動寫出它們一樣。
但是,除非您的應用程序正在從多個線程訪問屬性,否則沒有理由首先擔心這一點。從您的問題中很難判斷您的應用程序是否是多線程的。
我認爲自動屬性總是線程安全的,因爲它只是返回語句。 (如果屬性類型是一個結構,我不太確定...)。不過,我認爲,你必須小心,因爲你從屬性返回的內容絕不會以任何方式抵禦併發。 – 2011-05-02 12:07:50
@Mario:自動屬性不是「只有返回語句」。他們還包括一個二傳手,由於顯而易見的原因,它不是線程安全的。但即使是吸氣劑也不一定是線程安全的。 – 2011-05-02 12:10:03
好的,取決於數據類型,所有可以被原子操縱的東西都是線程安全的(所以現在只有像雙打或浮動的怪物纔會出現在我的腦海裏) - 我還沒有決定使用struct ... – 2011-05-02 12:11:33
不可以。如果您從多個線程訪問屬性,則仍需鎖定。
是的。如果多個線程正在讀取/寫入同一個屬性,則必須將其鎖定。
自動屬性只不過是語法糖而不鎖定。
我想說,這取決於屬性的類型。如果它可以以原子方式讀取(如int或指針),則讀取是安全的。
但是,如果您通過屬性訪問對象,則多個線程可以同時訪問該對象。
但是getter/setter中的鎖也不會在這裏幫助。
心連心
馬里奧
的- 1. 當我們使用xchg時,我們是否需要防護
- 2. 當我們創建表時,我們是否需要指定關係的基數?
- 3. 我們是否需要ezpublish_legacy?
- 4. 我們是否需要取消按鈕?
- 5. 我們是否需要枚舉的可序列化屬性
- 6. 當我們計算Gflop時,我們是否需要考慮指數計算?
- 7. 讀取屬性文件時,我們是否需要檢查編碼方案?
- 8. 使用obj-c中的屬性,我們是否需要聲明實例變量?
- 9. 我們是否也需要允許ruby虛擬屬性?
- 10. 更改屬性文件後我們是否需要部署war
- 11. 爲什麼我們需要在C#中鎖定和對象?
- 12. 當我們需要接口C#
- 13. 當我們有點子時,爲什麼我們需要Anaconda?
- 14. 如果我們需要支持多個平臺,我們是否需要restclient
- 15. 我們是否需要解決ConcurrentModificationException?
- 16. 我們是否需要更新Orbeon?
- 17. 我們是否需要更改標題?
- 18. 我們是否需要關閉file_get_contents?
- 19. 我們是否需要在UIScrollView iOS 6+
- 20. 我們是否需要分區器?
- 21. 當我們需要使用捆綁:鎖定和解鎖上Rails3中
- 22. 如果我們正在同步讀取,我們是否需要同步寫入?
- 23. 當我們不需要我們的表的主鍵?
- 24. 爲什麼我們需要在C#屬性
- 25. 我們是否需要在TCL中「取消」變量?
- 26. 我們是否需要在JavaScript中「取消」變量?
- 27. 爲什麼我們需要analysis_export當我們有analysis_port
- 28. 在httpclient 4.x.x中,當我們將PoolingClientConnectionManager配置爲httpclient時,我們是否需要手動釋放連接?
- 29. 爲什麼我們有類時需要id屬性?
- 30. 在Android中,當我們獲取地理數據時,我們是否需要在SIM中獲取互聯網服務?
可能重複[是C#自動實現靜態屬性是線程安全的?](http://stackoverflow.com/questions/2074670/are-c-auto-implemented- static-properties-thread-safe) – 2011-05-02 12:18:25