我想知道erlang過程如何與gen行爲(gen_server,gen_fsm,gen_event)相關聯。比如說gen_server是一個單獨的進程,一組進程還是他們沒有任何關係?erlang過程如何與gen行爲相關
1
A
回答
0
不同的gen行爲與進程有不同的關係。 gen_server
和gen_fsm
每個實例有一個進程(可以有多個進程運行相同的gen_server
代碼)。而gen_event
正在調用進程(gen_event:call
)的上下文中同步運行handle_event回調,或者在事件管理器進程(gen_event:notify
)的上下文中同步運行。
gen的行爲在那裏抽象出併發和使用過程來實現這一點。他們是如何做到這一點的,如果進程和gen行爲之間存在1:1關係,則取決於實際gen行爲的實現。
0
gen_server是一個'行爲'。這是關於模塊結構的一些協議。模塊中有哪些功能可用,什麼是該功能的簽名,可以返回什麼值等等。
otp體系結構假定某些進程在該模塊上運行。
所以我們可以說 - 某些進程是gen-server,如果它運行在具有gen_server行爲的模塊上,並且是由函數啓動的,旨在啓動gen_server(start()或start_link())。
2
諸如gen_server
之類的行爲是執行遞歸函數調用的單個Erlang進程,其中存儲了行爲的狀態。有關更多詳細信息,請參閱my answer至Erlang/OTP behaviors for beginner。
相關問題
- 1. 如何在erlang中測試gen server?
- 2. Erlang Gen Server之間的通信
- 3. 您如何規範Erlang中的併發/相關進程性能?
- 4. 與同一過程相關的線程
- 5. 如何將PowerBuilder .srj內容與PowerGen .gen內容關聯?
- 6. 句柄如何與線程相關?
- 7. 如何根據與序列相關的約束來過濾行?
- 8. 如何查看MySQL中與過程相關的授權?
- 9. 主鍵如何與存儲過程相關
- 10. Erlang產卵過程
- 11. 如何通過命令行通過basho rebar運行Erlang應用程序時設置Erlang節點名稱
- 12. 如何在Erlang shell中運行Erlang應用程序
- 13. CakePHP翻譯行爲與相關模型
- 14. 如何解決與div相關的運行時錯誤爲零?
- 15. API Gen與NetBeans 7.2.1
- 16. 如何通過相關
- 17. GNU如何與Linux相關?
- 18. Anaconda如何與Python相關?
- 19. HtDW如何與HtDP相關?
- 20. BCL如何與CLS相關?
- 21. JWT如何與OAuth相關?
- 22. Spring如何與JAXB相關?
- 23. 如何用erlang中的相關路徑打開文件?
- 24. 計算機語言'Erlang'與中國神相關嗎?
- 25. 與gen_server相關的Erlang可伸縮性問題:調用()
- 26. 如何將Erlang虛擬機作爲守護程序運行?
- 27. Erlang:應用程序行爲陷阱SIGTERM?
- 28. 存儲過程相關
- 29. google dart如何與google關閉相關?
- 30. 如何將關鍵事件與dojo中TreeGrid的行相關聯?
事件管理器是一個進程,並且gen_event處理程序在該進程中運行,而不管該事件是由'gen_event:notify'還是'gen_event:call'生成的。它類似於'gen_server:call'和'gen_server:cast'。 – rvirding