我正在考虑在Erlang中实现GPS+I2C惯性测量系统(IMU)。我希望从一组基于GPS 1PPS机制的I2C从机中采集多个样本,以便同时测量所有数据。由于Erlang使用消息队列来接收消息,我该如何确保GPS和I2C传感器之间的同步?我能否在不失去同步性的情况下在单独的进程中处理这两个传感器?
cld4siwp1#
如何在Erlang中同步多个进程?
receive {Pid1, Data} -> do_something end, receive {Pid2, Data} -> do_something end receive {Pid3, Data} -> do_something end, ...
第一个接收将一直阻塞,直到来自pid为Pid1的进程的数据发送消息为止。如果Pid1进程的执行时间最长,则后续接收都将立即执行。如果Pid1进程的执行时间最短,则至少有一个后续接收将被阻塞。总的结果是,所有接收都将在最长进程完成并发送消息所需的时间内执行。
1条答案
按热度按时间cld4siwp1#
如何在Erlang中同步多个进程?
第一个接收将一直阻塞,直到来自pid为Pid1的进程的数据发送消息为止。如果Pid1进程的执行时间最长,则后续接收都将立即执行。如果Pid1进程的执行时间最短,则至少有一个后续接收将被阻塞。
总的结果是,所有接收都将在最长进程完成并发送消息所需的时间内执行。