jac*_*des 3 c linux multithreading process
我有一台运行Linux 2.6内核的ARM设备,总内存为64 MB RAM.
有一个数据源,包括一个由Linux机箱查询的仪表,通过RS485和ModBus作为应用程序协议.
还有另一项任务,包括读取这些值并生成json对象,然后将HTTP POST发送到特定服务器.
网络操作可能比串行慢,尤其是在低GPRS覆盖范围内.
我需要并发,程序是用C语言编写的.
你会以哪种方式进行并发?使用select()还是使用pthreads?
在分析这个特定的应用程序时,实际上只有一个与选择pthreads相关的问题:
在这种情况下,我认为答案显然是"不".当然,这不是唯一可能的问题,而是唯一的密切关系.有理由更喜欢单独的流程:
进一步的分析需要比你给出的更多细节,但这是另一种思考选择的方法:发明线程是为了减轻过程模型的某些局限性.除非您知道要达到这些限制,否则请使用单独的流程.
添加回应评论:
我同意psusi建议的设计.只需要有两个进程,一个(让我们说传感器阅读器,这是一个很好的选择),它只分配一个http发送者.这两个进程可以使用传统的IPC(如管道)进行通信.当传感器有一些时,传感器进程会向下发送数据,而子进程(http)进程将其打包在json中并在其路上发送.
它只需要两个长期存在的进程,它可能使用与pthread实现相同数量的核心,并且它更容易实现.