當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


erlang alias()用法及代碼示例


alias() -> Alias
OTP 24.0
alias(Opts) -> Alias
OTP 24.0
類型:
Alias = reference()
Opts = [explicit_unalias | reply]

創建一個別名,在向創建該別名的進程發送消息時可以使用該別名。禁用別名後,使用該別名發送的消息將被丟棄。可以使用以下命令停用別名unalias/1。目前可用的選項alias/1


explicit_unalias

隻能通過調用 unalias/1 來停用別名。如果未傳遞任何選項或調用 alias/0,這也是默認行為。


reply

當收到通過別名發送的回複消息時,別名將自動停用。別名仍然可以通過調用 unalias/1 來停用。

例子:

server() ->
    receive
        {request, AliasReqId, Request} ->
            Result = perform_request(Request),
            AliasReqId ! {reply, AliasReqId, Result}
    end,
    server().

client(ServerPid, Request) ->
    AliasReqId = alias([reply]),
    ServerPid ! {request, AliasReqId, Request},
    %% Alias will be automatically deactivated if we receive a reply
    %% since we used the 'reply' option...
    receive
        {reply, AliasReqId, Result} -> Result
    after 5000 ->
            unalias(AliasReqId),
            %% Flush message queue in case the reply arrived
            %% just before the alias was deactivated...
            receive {reply, AliasReqId, Result} -> Result
            after 0 -> exit(timeout)
            end
    end.

請注意,此示例中的服務器和客戶端都必須至少在 OTP 24 係統上執行才能使其正常工作。

有關進程別名的更多信息,請參閱進程別名的部分Erlang參考手冊.

相關用法


注:本文由純淨天空篩選整理自erlang.org大神的英文原創作品 alias() -> Alias。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。