1

erlangコードにgen_serverがあります。そして、私がそれを実行しようとすると、この後の次のコードは機能しません。例えば:

.......
my_server:start_link().
io:format("AAAAAAAAAAAAAAAAAAA"),
.....

現在、io:format/1は機能しません。そして、spawnを使用してgen_serverを実行すると、次のようになります。

......
spawn(fun() -> my_server:start_link() end)
io:format("AAAAAAAAAAAAAAAAA")
......

これでio:formatが機能しました。なんで?

ありがとうございました。

4

1 に答える 1

2

モジュール内の関数がor関数を呼び出すstart_linkと仮定します。my_servergen_server:start_link/3gen_server:start_link/4

次に、はモジュールの関数をgen_server:start_link呼び出します。あなたの関数はブロッキング呼び出しであると思います。これが最初のコード部分が返されない理由です。 initmy_serverinit

于 2011-05-04T02:07:35.677 に答える