libmodbus有多个线程?

时间:2018-08-22 20:56:38

标签: c multithreading thread-safety

我对libmodbus(http://libmodbus.org/)的线程安全感到困惑。

我有一个程序,可以作为Modbus客户端使用。我有5个Modbus设备(服务器),我想从中读取一些值。 目前,我编写了一个函数,该函数在main()中调用。在此函数中,我有一个包含5个modbus_t实例的数组,并带有一个FOR循环,我与服务器建立了连接并读取值-依次读取。 可以在线程中使用libmodbus,这样我可以同时建立和读取值吗? 有些网站说“是”,有些网站说“不” ...

安德烈

1 个答案:

答案 0 :(得分:0)

libmodbus没有记录它是否是线程安全的,因此这是通过查看源代码确定的:

  • 您不能在线程之间共享modbus_tmodbus_t实例不是线程安全的。

  • 您可以有许多线程,每个线程都在modbus_t的不同实例上运行。

  • 创建modbus_t实例是线程安全的。

如果需要在线程之间共享modbus_t实例,则需要提供自己的锁定,以确保只有一个线程可以同时访问该实例。