我必须编写一个程序,为同时访问多个资源(网络摄像头)的多个客户端提供服务。
示例:客户 A 和 B 都询问两个云台摄像机 A 和 B 的当前位置。我必须避免客户直接与该摄像机对话(因为可能有很多客户)所以我的想法是有一个流程对于每个客户端(通过套接字连接)和每个凸轮的进程。
如果客户端请求凸轮 A 的位置,则程序为该凸轮派生新进程,该进程重复轮询凸轮位置 10 秒,然后退出。在这 10 秒内,来自任何客户的每个位置请求都应由该 cam-A 进程提供服务。
问题是:cam 进程如何与客户端进程通信?我天真的方法是使用 cam 进程写入和客户端进程读取的全局变量(camA-posX、camA-posY、camB-posX、camB-posY...)。我什至不知道分叉进程之间的全局变量是否可能。
我的第二种方法是使用perlipc/Safe Pipe Opens中的管道,但这仅涵盖父子通信。
另一个问题:必须有人(父进程?)必须决定我是否必须分叉一个新的 cam 进程或者它是否仍在运行。
也许最好编写两个程序(使用第二种方法),一个用于客户端,一个用于相机,它们通过单个套接字相互通信。
如果凸轮和客户端的数量增加,甚至可能需要扩展整个事物以分配负载。