gpt4 book ai didi

erlang - 在erlang中如何获取调用进程的进程ID?

转载 作者:行者123 更新时间:2023-12-02 07:21:37 24 4
gpt4 key购买 nike

A查看了http://erlang.org/doc/apps/inets/http_client.html并发现以下内容:

An ordinary asynchronous request. The result will be sent to the calling process on the form {http, {ReqestId, Result}}

5 > {ok, RequestId} =
http:request(get, {"http://www.erlang.org", []}, [], [{sync, false}]).
In this case the calling process is the shell, so we receive the result.

6 > receive {http, {RequestId, Result}} -> ok after 500 -> error end.
ok

http:request 以这种方式调用后向我传递了一条消息,但它如何知道我的进程 ID?据我了解,http:request必须执行“Pid!{http,{RequestId,Result}”才能将结果发送给我,但是它从哪里知道Pid的值?

最佳答案

如果您查看 #request{} 记录的定义(在 httpc_internal.hrl 中),您将看到有一个名为 from 的字段。它包含调用者的pid;这就是服务器稍后能够向调用者发送消息的方式。

查看http模块的源代码,您会发现您的调用最终将到达handle_request函数,其中from字段设置为self()。

关于erlang - 在erlang中如何获取调用进程的进程ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1282562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com