期待している動作
指定したプロセスに対して処理が終わったら、そのままキレイに死んで欲しい。
結論
handle_call(_Request, _From, State) の戻りに対して {stop, {shutdown, Reason}, Reply, State} とやるだけです。
handle_call(_Request, _From, State) ->
Reply = ok,
Reason = spam,
{stop, {shutdown, Reason} Reply, State};
使いどころなんですが、ほとんどありません。ただ連鎖で死ぬときに、最後にこの処理をして貰ってから死んで欲しい、というときに使うと良いです。
蛇足
なぜこの記事を書いたかというと、この動きが必要な実装がでてきたのですが、値を同期的に戻して stop するという機能が gen_server にあると思っていなかったという、無知をさらすためです。
Top comments (0)