【问题标题】:Multiple threads with libmodbus?使用 libmodbus 的多个线程?
【发布时间】:2018-08-22 20:56:37
【问题描述】:

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

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

安德烈

【问题讨论】:

    标签: c multithreading thread-safety


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 是否可以将多个客户端(modbus_t)连接到一台服务器?我正在尝试创建许多线程来连接到同一个控制器,每个都有自己的实例,但似乎只有最后一个连接的线程可以通信。 ModBus 协议是否允许同一服务器上的多个客户端? libmodbus 是否允许多连接到同一台服务器?
    猜你喜欢
    • 2020-11-18
    • 2013-04-05
    • 2011-09-23
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多