【问题标题】:How to decouple and then reconstruct an Erlang process PID <A.B.C>如何解耦然后重构一个 Erlang 进程 PID <A.B.C>
【发布时间】:2013-06-04 18:58:02
【问题描述】:

erlang 进程 PID 引用是从以如下形式启动的进程返回的:

<0.344.0>

有这样的PID,你怎么能把它的三个部分提取出来,序列化,然后再重新组合呢?

在我的示例中,我想要:

{A,B,C} = decomposePid(Pid),
% serialize somewhere
% deserialize somewhere
Pid = recompose(A,B,C),

我知道 Pid 可以作为参数等发送,但我有序列化需求,需要真正将这些 A、B、C 值从 Pid 中解耦出来。

【问题讨论】:

    标签: erlang


    【解决方案1】:

    或使用erlang:term_to_binary/1erlang:binary_to_term/1。这取决于您打算如何处理序列化的 pid。使用pid_to_listlist_to_pid 对其进行序列化会导致仅在该erlang 节点中有效,而使用term_to_binarybinary_to_term 在分布式erlng 系统中有效。然而,在这两种情况下,序列化的 pid 仅在原始 erlang 节点运行时才有效,一旦它终止,序列化的 pid 就失去了意义,因为它所引用的进程已经消失。

    【讨论】:

      【解决方案2】:

      您要查找的函数是 erlang:list_to_pid/1 和 erlang:pid_to_list/1。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-19
        • 2011-10-28
        • 2015-04-19
        • 2023-04-04
        • 1970-01-01
        • 1970-01-01
        • 2013-04-04
        相关资源
        最近更新 更多