需要從接收來自其他進程的許多傳入消息的進程實現同步呼叫。區分的問題 - 當呼叫回復到呼叫時。我是否需要產生額外的進程來從隊列中提取消息到緩衝區,而不會遇到返回消息,然後將其發送到主進程,並在其他人接受之後。來自進程的同步呼叫與許多傳入消息
-4
A
回答
0
訣竅是使用引用作爲令牌用於複製:
replicate() ->
{ok, Token} = db:ask_replicate(...),
receive
{replication_completed, Token} ->
ok
end
其中Token
與對make_ref()
一個呼叫建立。由於沒有其他信息會匹配Token
,您是安全的。其他郵件將被放置在郵箱中供以後審查。
但是,上述解決方案並未將進程崩潰考慮在內。您還需要在數據庫服務器上安裝監視器。讓模式正確的最簡單方法是讓介體爲gen_server
。或者,您可以閱讀LearnYouSomeErlang中的章節:http://learnyousomeerlang.com/what-is-otp#the-basic-server查看kitty_server
中的同步呼叫。
相關問題
- 1. jQuery同步呼叫
- 2. Nservicebus同步呼叫
- 3. 不允許傳入呼叫Lync Api或禁用傳入呼叫的聲音
- 4. 取消異步呼叫
- 5. 星號外呼和來自不同域的入站呼叫
- 6. std :: future.get()多個呼叫(來自不同的線程)
- 7. Ajax:與一次大型呼叫相比,許多(較小)呼叫
- 8. 來自CDR的同時呼叫
- 9. 來自不同類Android的呼叫Asynctask
- 10. 使nodejs同步呼叫
- 11. DBus同步呼叫超時
- 12. AJAX來自多個選擇的呼叫
- 13. 來自SIP的多個呼叫
- 14. 與nservicebus同步的消息
- 15. 處理來自UdpClient.BeginReceive()的傳入消息()
- 16. 來自iOS應用程序的呼叫
- 17. c呼叫同步是否與命令同步一樣?
- 18. 來自MTA的STA呼叫
- 19. 進行同步應用程序到電話呼叫(Android)
- 20. 取消優異的異步呼叫?
- 21. 呼叫應答器的異步呼叫
- 22. 等待異步在Akka處理下一條消息之前的未來呼叫
- 23. 呼叫來電呼叫
- 24. Java RMI:確定來自Callee的呼叫者進程
- 25. 保護來自同一應用程序的ReST呼叫
- 26. 基於來自呼叫
- 27. 如何使用同步呼叫GWT或等待呼叫完成
- 28. Chrome擴展的消息傳遞,當XHR呼叫的jQuery
- 29. akka/actor模型中的同步呼叫
- 30. magento中的同步jquery ajax呼叫
我不知道我理解你的問題。 –
假設我已經正確地理解了你的問題 - 但我懷疑它 - 你有幾個進程向單個服務器發送隨機消息,這需要收集(也許處理)消息,直到它收到一條特殊消息,在這種情況下,它會回覆主叫方。你是這個意思嗎? –
我的進程是客戶端和分佈式db節點之間的中介。最終clent可以要求節點之間的複製。在複製期間,不能處理任何對db的請求,它們必須在複製完成後進行緩衝和處理。複製完成觸發器發送消息給介體,但在介體隊列中有很多消息。調解員如何知道他收到有關複製的特殊消息? – Yola