如何在Erlang中同步多个进程?

uwopmtnx  于 2022-12-08  发布在  Erlang
关注(0)|答案(1)|浏览(216)

我正在考虑在Erlang中实现GPS+I2C惯性测量系统(IMU)。我希望从一组基于GPS 1PPS机制的I2C从机中采集多个样本,以便同时测量所有数据。
由于Erlang使用消息队列来接收消息,我该如何确保GPS和I2C传感器之间的同步?我能否在不失去同步性的情况下在单独的进程中处理这两个传感器?

cld4siwp

cld4siwp1#

如何在Erlang中同步多个进程?

receive
    {Pid1, Data} -> do_something
end,
receive
    {Pid2, Data} -> do_something
end
receive
    {Pid3, Data} -> do_something
end,
...

第一个接收将一直阻塞,直到来自pid为Pid1的进程的数据发送消息为止。如果Pid1进程的执行时间最长,则后续接收都将立即执行。如果Pid1进程的执行时间最短,则至少有一个后续接收将被阻塞。
总的结果是,所有接收都将在最长进程完成并发送消息所需的时间内执行。

相关问题