【发布时间】:2019-06-29 06:13:33
【问题描述】:
我有一个程序(C++ 应用程序),其中多个线程正在调用用 erlang 模块(genserver)编写的“handle_info()”。
观察到,如果线程 1 向这个“handle_info()”发送了一堆消息(比如 1000 条),同时如果线程 2 也同时向“handle_info( )",观察到handle_info()只有在线程1发送完消息后才会执行线程2发送的消息。
我读到 handle_info() 是异步的,但在这种情况下,我发现它像同步方法一样工作。
我做错了什么吗?
注意:
Thread-1 和 Thread-2 由同一个 erlang 模块生成,线程函数来自 C++ 应用程序。
线程函数使用“enif_send()”函数(erl_nif.h)调用handle_info()。
【问题讨论】:
-
请向我们展示您的代码,以便我们查看是否有任何错误可能导致此问题。
-
他们如何打电话
handle_info()? -
handle_info 正在使用 enif_send() 函数调用。它被成功调用。但几乎每次我都观察到 Thread-1 消息首先由 handle_info() 处理,然后再处理 Thread-2 消息。
标签: c++ asynchronous erlang gen-server