我有一个通过 Unix 套接字与 PHP 通信的 C 程序。程序如下: PHP 接受用户上传的文件,然后向 C 发送一个“信号”,然后 C 调度另一个进程(fork)来解压缩文件(我知道这可以由 PHP 单独处理,这只是一个示例;整个问题更复杂)。
问题是我不想同时运行超过 4 个进程。我认为这可以这样解决:C,当它从 PHP 获得一个新的“任务”时,它会将它转储到一个队列中并一个接一个地处理它们(确保运行不超过 4 个),同时仍在监听插座。
我不确定如何实现这一点,因为我不能在同一个过程中做到这一点(或者我可以)?我以为我可以有另一个子进程来管理队列,父进程可以使用共享内存访问该队列,但这似乎过于复杂。还有其他方法吗?
提前致谢。