複数のリソース (Web カメラ) に同時にアクセスする複数のクライアントにサービスを提供するプログラムを作成する必要があります。
例: クライアント A と B の両方が、2 台のパンチルト カメラ A と B の現在位置を要求します。クライアントがそのカメラに直接話しかけないようにする必要があります (多くのクライアントが存在する可能性があるため)。各クライアント(ソケットを介して接続する人)と各カムのプロセス。
クライアントがカム A の位置を要求すると、プログラムはそのカムの新しいプロセスをフォークし、そのプロセスはカム位置を 10 秒間繰り返しポーリングしてから終了します。その 10 秒以内に、任意のクライアントからの各位置要求は、この cam-A プロセスによって処理される必要があります。
問題は、cam プロセスがクライアント プロセスとどのように通信できるかということです。私の素朴なアプローチは、cam プロセスが書き込み、クライアント プロセスが読み取るグローバル変数 (camA-posX、camA-posY、camB-posX、camB-posY、...) を使用することです。フォークされたプロセス間のグローバルがまったく可能かどうかさえわかりません。
私の 2 番目のアプローチは、perlipc/Safe Pipe Opensのようにパイプを使用することですが、これは親子通信のみを対象としています。
別の問題: 新しい cam プロセスを fork する必要があるか、それともまだ実行中かを決定しなければならない誰か (親プロセス?) がいるに違いありません。
クライアント用とカメラ用の 2 つのプログラムを (2 番目の方法を使用して) 作成し、1 つのソケットを介して相互に通信する方がよい場合もあります。
カムとクライアントの数が増えた場合、負荷を分散するために全体をスケーリングする必要さえあるかもしれません。