使用 libmodbus 线程化读取 COM 端口

Threading to read COM ports with libmodbus

我完全不熟悉 C 中的线程,因此想在开始之前检查我的想法是否有效并且相对简单易用。我想编写一个程序,可以使用 Modbus RTU 在两个不同的线程(每个 COM 端口一个线程)上同时从 2 个 COM 端口读取。我比较精通使用 libmodbus 函数等,这只是我需要帮助的线程部分。

所以,有几个问题: 1) 这是否可以相对容易地实现(任何示例,无论多么简单,我们都将不胜感激),如果可以,需要考虑哪些内存方面的问题?

2) 在C中实现多线程需要哪些相关的头文件?

So, a few questions: 1) Is this possible to implement relatively easily (any examples no matter how simple would be much appreciated)

线程本身是一个相当高级的主题,然后您还拥有使用 COM 端口的系统特定方法。您必须研究多线程和 OS-特定的 COM 端口库例程。这不是微不足道的。

what considerations with regards to memory will need to be made?

不应该是一个问题,除了你可能想要实现一些缓冲系统,如果被多个线程使用,则必须由互斥体保护。

Which relevant header files are required to implement multithreading in C?

取决于系统。对于 Linux 和其他 POSIX 系统,使用来自 pthread.h 的 pthreads(POSIX 线程)。 Windows 编译器可能支持也可能不支持它们。否则,Windows 使用它自己的线程例程,CreateThread 等。像 Visual Studio 或 C++ Builder 这样的 RAD 工具在 CreateThread 周围有包装器 类。其他系统可能有不同的库。

曾尝试使用 C11 标准对线程进行标准化,但该标准仍处于实验阶段,我们尚未确定它是否会被使用或最终失败 - 几乎没有编译器支持 C11 线程.目前,pthreads 是最常用的行业标准。