即使我注销sts,我的生成过程也不会停止。如何不使用gen_server停止它?
start() ->
case whereis(sts) of
undefined ->
PidA = spawn(dist_erlang, init,[]),
register(sts, PidA),
{ok,PidA};
_ ->
{ok,whereis(sts)}
end.
stop() ->
case whereis(sts) of
undefined ->
already_stopped;
_ ->
unregister(sts),
stopped,
end.
Run Code Online (Sandbox Code Playgroud)
使用注销并不会停止该过程。但是,停止进程不会取消注册。因此,与其在此处使用注销,不如使用erlang:exit/2
stop() ->
case whereis(sts) of
undefined ->
already_stopped;
Pid ->
exit(Pid, normal), % Use whatever exit reason you want
stopped
end.
Run Code Online (Sandbox Code Playgroud)
话虽如此,您实际上应该使用OTP流程行为(例如gen_server),因为它们使流程管理更加容易。使用OTP流程,您可以改为call使流程停止并告诉它停止,这样,当您收到答复时,该流程已经停止。否则,您的退出消息可能需要一些时间才能通过。
| 归档时间: |
|
| 查看次数: |
593 次 |
| 最近记录: |