回答
不,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. 讀取屬性文件時,我們是否需要檢查編碼方案?
- 4. 使用obj-c中的屬性,我們是否需要聲明實例變量?
- 5. 更改屬性文件後我們是否需要部署war
- 6. 爲什麼我們需要在C#中鎖定和對象?
- 7. 當我們需要接口C#
- 8. 我們是否需要更新Orbeon?
- 9. 當我們需要使用捆綁:鎖定和解鎖上Rails3中
- 10. 如果我們正在同步讀取,我們是否需要同步寫入?
- 11. 當我們不需要我們的表的主鍵?
- 12. 爲什麼我們需要在C#屬性
- 13. 我們是否需要在TCL中「取消」變量?
- 14. 在httpclient 4.x.x中,當我們將PoolingClientConnectionManager配置爲httpclient時,我們是否需要手動釋放連接?
- 15. 爲什麼我們有類時需要id屬性?
- 16. 當我們使用AdoJobStore時,我們是否應該允許Xml讀取
- 17. 我們是否需要取消訂閱完成/出錯的observable?
- 18. 我們總是需要關閉我們提供的ModelViewViewController嗎?
- 19. 獲取屬性列表(通過反射)時,我們是否可以排除ReadOnly?
- 20. 我們是否需要對我們的應用程序進行數字簽名?
- 21. 如果我們使用ForkJoinPool框架的Recursiveaction,我們是否需要調用join()?
- 22. c#vb:我們真的需要System.Lazy嗎?
- 23. 使用C#4.0:我們是否需要VS 2010或.NET Framework 4.0
- 24. 當我們需要多個EntityManager?
- 25. 當我們使用GWT客戶端時,我們是否需要在服務器上使用java?
- 26. 爲什麼我們需要創建類變量來獲取和設置屬性?
- 27. 我們需要在jQuery的
- 28. 當我們有內核時,爲什麼我們需要驅動程序?
- 29. 當我們已經有向量時,爲什麼我們需要同步ArrayList?
- 30. 當我們已經有mapDispatchToProps時,爲什麼我們需要使用redux-thunk
可能重複[是C#自動實現靜態屬性是線程安全的?](http://stackoverflow.com/questions/2074670/are-c-auto-implemented- static-properties-thread-safe) – 2011-05-02 12:18:25