Monitor.Pulse/All
和Monitor.Wait
是有用的方法,但我收到了大量使用它們的投訴(我有一個DSL設計者將其吐出),結果代碼變得不可讀。你怎麼看?使用Pulse&Wait可以嗎?或者它是邪惡的並且是隻寫代碼的原因?
0
A
回答
1
如果將所有代碼都散佈在實際必須閱讀的代碼中,那可能是一個問題。爲什麼它首先經常出現?該功能是否可以封裝在別的地方?
從根本上來說,Wait/Pulse沒有什麼問題 - 但是就像生活中的其他事情一樣,如果使用不當,它會成爲一個問題。不管你的使用是否不恰當,很難說沒有看到代碼:(
-1
聽起來像是應該用注入編碼作爲一個方面。但是,我對C#中AOP的支持的知識是微不足道的,所以我不能提供任何超過該
0
我真的建議反對這種做法 - 從MSDN頁面上PulseEvent:
等待同步對象的線程可以從等待狀態被暫時移除由內核模式的APC執行,然後在APC完成後返回等待狀態。如果在線程已經執行期間發生對PulseEvent的調用從等待狀態中刪除,線程將不會被釋放,因爲PulseEvent只釋放那些正在等待調用的線程。因此,PulseEvent不可靠,不應該被新應用程序使用。相反,使用條件變量。
現在,Monitor.Pulse可能會使用PulseEvent以外的其他語言編寫,但是整個概念很有缺陷 - 正確使用鎖定和條件變量。
相關問題
- 1. 這是eval邪惡嗎?
- 2. AutoCompleteBox是邪惡的
- 3. '邪惡'平等減慢代碼嗎?
- 4. 擴展JavaScript的內置類型 - 它是邪惡的嗎?
- 5. 以上CSS是必要的邪惡?
- 6. 負整數索引:它們是邪惡的嗎?
- 7. 這個javascript代碼是做什麼的?它是惡意的嗎?
- 8. 使用類方法:在這個用例中它們是「邪惡的」嗎?
- 9. Flurry User ID是否是邪惡的?
- 10. 子查詢是否是邪惡的?
- 11. 這真的是使用java的FTP代碼的原因嗎?
- 12. 惡意js?或者它是什麼
- 13. 導軌; wicked_pdf是邪惡慢
- 14. 'TryAction()'方法是否邪惡?
- 15. 爲什麼可以空的ForeignKeys「邪惡」?
- 16. 爲什麼JFormattedTextField是邪惡的?
- 17. Django包括 - 他們是邪惡的?
- 18. RJS是邪惡的,爲什麼?
- 19. 如何挖掘容器少語法的工作? (它是邪惡的嗎?)
- 20. Javascript Eval是邪惡的,但只在某些情況下?
- 21. 爲什麼邪惡的合併被認爲是有害的?
- 22. 這可以替代單身模式嗎?如果不是原因?
- 23. 「eval是邪惡的」,但我有選擇嗎?
- 24. 程序集寬度多播屬性。他們是邪惡的嗎?
- 25. 視圖圖層的'getters and setters是邪惡'失敗嗎?
- 26. 如何控制或從網頁複製(爲好,不是邪惡的原因)編輯文本
- 27. 在Emacs中禁用邪惡模式導航?或者任何只讀緩衝區?
- 28. 檢查/驗證用戶提供的CSS是不是邪惡
- 29. 代碼的含義是什麼以及惡意黑客可以如何使用?
- 30. 常量迭代器在C++中仍然是邪惡的14
Pulse沒有這個問題。整個概念*沒有缺陷,並且相當於Java已經安全地使用了多年。 – 2008-12-11 17:35:07