【发布时间】:2022-01-15 17:44:54
【问题描述】:
我正在考虑在 Erlang 中实现 GPS+I2C 惯性测量系统 (IMU)。 我想开始基于 GPS 1PPS 机制从一组 I2C 从机中获取多个样本,以便同时测量所有内容。
由于 Erlang 使用消息队列来接收消息,我该如何确保 GPS 和 I2C 传感器之间的同步?我可以在不同的进程中处理这两个进程而不丢失同步性吗?
【问题讨论】:
我正在考虑在 Erlang 中实现 GPS+I2C 惯性测量系统 (IMU)。 我想开始基于 GPS 1PPS 机制从一组 I2C 从机中获取多个样本,以便同时测量所有内容。
由于 Erlang 使用消息队列来接收消息,我该如何确保 GPS 和 I2C 传感器之间的同步?我可以在不同的进程中处理这两个进程而不丢失同步性吗?
【问题讨论】:
如何在 Erlang 中同步多个进程?
receive
{Pid1, Data} -> do_something
end,
receive
{Pid2, Data} -> do_something
end
receive
{Pid3, Data} -> do_something
end,
...
第一次接收将阻塞,直到来自具有 pid Pid1 的进程的数据发送消息。如果 Pid1 进程执行时间最长,那么后续的接收都会立即执行。如果 Pid1 进程执行时间最少,则后续接收中至少有一个会阻塞。
总体结果是所有接收都将在最长进程完成并发送消息所需的时间内执行。
【讨论】: