我認爲這個原子操作比++
更快。我只看到有利於Interlocked.Increment
的優勢。它有什麼缺點?如果Interlocked.Increment是原子的,爲什麼我應該用++代替?
1
A
回答
11
1
原子並不意味着它更快。事實上,它幾乎肯定會變慢。
在併發編程,一個 操作(或一組操作)是 原子,線性化,不可分割或 不間斷如果它出現在 其餘系統的發生 瞬間。
這僅僅意味着在手術過程中沒有可觀察到的副作用。它沒有說明手術需要多長時間。
相關問題
- 1. 我應該用什麼來代替Directory.SetCurrentDirecory?
- 2. 我應該用什麼來代替clutter_score_new?
- 3. 我應該用什麼來代替LoadWithPartialName()?
- 4. 我應該用什麼來代替ping?
- 5. 我應該用什麼來代替stmt.executeUpdate()?
- 6. 爲什麼我應該使用Reify代替clojure中的代理?
- 7. 我應該寫什麼來代替ACFacebookAppIdKey?
- 8. 如果違反Liskov替代原則,我該怎麼辦?
- 9. 爲什麼我應該在物業中使用非原子?
- 10. 這是違反Liskov替代原則嗎?如果是這樣,我該怎麼辦?
- 11. 什麼是反向代理,爲什麼我應該使用Node.JS?
- 12. 如果Hessian死了,應該用什麼來代替?
- 13. ActiveRecord find_all_by_X是否保存命令?如果不是,應該用什麼來代替?
- 14. 應該用什麼來代替sun.net.www.protocol.jar.Handler?
- 15. 我應該用什麼來代替Django-sorl棄用的ImageWithThumbnailsField?
- 16. 爲什麼我應該使用vagrant如果我使用virtualenv?
- 17. 爲什麼Django Atom1Feed使用atom:updated代替原子:published?
- 18. 我應該用什麼來代替Perl中的printf?
- 19. 我應該用什麼來代替linux.h中的windows.h?
- 20. 我應該用什麼來代替通用列表數組?
- 21. getPosition已棄用我應該用什麼來代替?
- 22. 什麼值應該代替「下劃線」?
- 23. 我應該用什麼來代替goto語句?
- 24. 在OpenGL ES 2.0中我應該用什麼來代替glTexCoordPointer()?
- 25. 我們應該用什麼來代替nltk.Text.generate()?
- 26. 我應該用什麼替換這段代碼?
- 27. 我應該用什麼來代替OnMouseXXX事件處理程序?
- 28. \ w不夠匹配,我應該用什麼來代替?
- 29. 我應該用什麼來代替'-ms-appearance:複選框'
- 30. 不能擴展枚舉;我應該用什麼來代替?
你爲什麼認爲它比'++'快? – 2011-05-23 13:42:40
你沒有單線程編程? – 2011-05-23 13:42:44
這已經在這裏回答:http://stackoverflow.com/questions/1034070/performance-of-interlocked-increment – Niki 2011-05-23 13:44:14