什麼是事件驅動的編程,事件驅動編程與線程有什麼關係?我在閱讀關於服務器以及他們如何處理用戶請求和管理數據時遇到了這個問題。如果用戶發送請求,服務器開始處理數據並將狀態寫入表中。爲什麼?服務器是否停止處理該用戶的數據並開始爲另一個用戶處理數據或者針對每個用戶的處理是否在不同的線程(多線程服務器)中運行?什麼是事件驅動的編程?
4
A
回答
6
事件驅動編程!=線程編程,但它們可以(也應該)重疊。
當需要系統「同時」處理多個動作時使用線程化編程。由於大多數操作系統使用時間共享模型進行線程活動,或者至少在線程數多於可用處理器的情況下使用時,我會同時使用它們。無論哪種方式,與你的問題沒有密切關係
當我需要一個應用程序來做兩件或兩件以上的事情時,我會使用線程編程 - 就像從鍵盤接收用戶輸入(線程1)並根據接收到的輸入運行計算(線程2)。
事件驅動的編程有點不同,但爲了擴展,它必須利用線程編程。我可以有一個等待事件/中斷的單個線程,然後在事件發生時處理事件。如果它確實是單線程的,則在處理第一個事件時,任何其他進入的事件都將被阻塞或丟失。如果我有一個多線程的事件處理模型,那麼隨着事件的發展,更多的線程將會被激活。我正在掩飾所需的生產者/工作者機制,但是再一次,與你的問題水平沒有密切關係。
爲什麼服務器在接收到事件時開始處理/存儲狀態信息?那麼,因爲它已被編程。 :-)狀態處理可能與事件處理相關,也可能不相關。狀態處理與事件處理是一個單獨的主題,就像事件不同於線程一樣。
這應該回答你提出的所有問題。 Jonny的第一條評論/觀點值得注意 - 更具體地說明你不瞭解的內容會爲你提供更好的答案。
相關問題
- 1. 什麼是事件驅動的併發?
- 2. 數據驅動的編程/事件驅動編程
- 3. Java事件驅動編程下的什麼?
- 4. 爲什麼Redis是單線程的(事件驅動)
- 5. 協程VS事件驅動編程
- 6. PL/SQL中的事件驅動編程
- 7. 事件驅動的編程 - node.js,Java
- 8. 域驅動的編程和事件
- 9. Ext JS中的事件驅動編程
- 10. 事件驅動的編程node.js?
- 11. Java和事件驅動編程
- 12. 事件驅動架構/編程
- 13. 事件驅動有什麼魔力?
- 14. Win32事件驅動的編程是如何實現的?
- 15. 事件驅動的編程後臺代碼是怎樣的?
- 16. 事件驅動編程是如何實現的?
- 17. 事件驅動編程是如何完成的?
- 18. 我可以使用什麼庫在Python中實現事件驅動的編程?
- 19. 什麼是事件驅動的io(上下文:Apache MINA,JBoss Netty)?
- 20. 編寫MySql驅動程序的適當參考是什麼?
- 21. 什麼是Windows內核驅動程序?
- 22. 什麼是jTDS驅動程序?
- 23. 什麼是pyspark驅動程序?
- 24. 什麼是測試驅動程序?
- 25. 是什麼在MySQL JDBC驅動程序
- 26. 什麼是Type 4 XA驅動程序?
- 27. 什麼是驅動程序功能?
- 28. 什麼是jdbc驅動程序「org.gjt.mm.mysql.Driver」?
- 29. 驅動程序是什麼意思?
- 30. 是nodeJs事件驅動?
認真嗎?爲什麼不只是谷歌的問題標題? http://en.wikipedia.org/wiki/Event-driven_programming – JonnyReeves 2012-04-25 21:01:20
它不給我正確的答案:( – omegasbk 2012-04-25 21:03:04
我不確定你甚至有一個問題在這裏。要回答你的問題,不,這不是什麼是事件驅動編程引用;你可能希望閱讀[觀察者模式](http://en.wikipedia.org/wiki/Observer_pattern) – JonnyReeves 2012-04-25 21:05:27