我正在使用Linux机器与PLC进行通信。 PLC和Linux机器在本地网络内连接,并使用UDP/IP作为基本协议。此外,端口号码是固定在两边。使用pthreads执行同步和异步通信的C/C++代码
这种通信需要实现:
要求1:Linux机器能发送命令(每次一个命令)到PLC。收到每个命令后,PLC将在50ms内以成功/失败消息响应Linux机器。
要求2:反之亦然,PLC可以向Linux机器发送命令。 Linux机器必须在50ms内回复消息。 PLC发送到Linux机器的是异步。因此,Linux机器需要连续监视(或监听)端口。
简单的C/C++代码已被用于单独测试有关上述要求的通信。有效。但阻塞机制进行了。
这里是具有挑战性的部分。我想用pthreads来进行这样的通信。我的解决方案是简单地为每个需求创建两个线程。我勾勒使用附加PIC https://www.dropbox.com/s/vriyrprl7j6tntx/multi-thread%20solution.png?dl=0我的思想,以“线程0”表示主线程,“线程1”表示要求1个线程和“线程2”表示要求2线程。 '共享数据'表示可以在所有子线程中共享的数据。 '线程1数据'专用于线程1的使用,其他线程不会访问。同样,“线程2数据”仅被线程2使用。
考虑到两个线程将在同一个端口上进行系统调用,我担心会升高。因此,我需要对我的解决方案进行评论,并且获得更多工作解决方案将会非常棒。附:我并不太担心线程同步和创建。如果您的解决方案中需要线程同步和创建,这对我来说非常酷。
在此先感谢。
Stackoverflow不是问这样的开放式问题的地方。但有些想法。你并没有真正给出任何转向线程体系结构的强有力理由。最近我能看到的是旧的解决方案是一个“阻止机制”,你想避免这种情况。但避免一个特定的机制不应该是最终目标。关于“阻塞机制”(你已经说过的工作)是什么问题(例如它是否不符合时间要求)?要达成解决方案,首先必须了解带来的问题。只有这样我们才能决定线程是否有意义。 – kaylum
请注意,实现异步体系结构不需要线程化。 – kaylum
@kaylum感谢您的回复。我需要制定一些规范。 –