概念
进程池其实就是我们提前创建好一批进程, 当有任务的时候再将进程指派过去完成那个任务。
中间的这框框就是管道, 当父进程没有给子进程发送任务的时候, 子进程就会一直阻塞着, 于是就形成了这样的结构。
代码
#include "ProcessPool.hpp"
#include <cassert>
#include <ctime>
const int processnum = 5;
class channel {
public:
channel(int cmdfd, int pid, const std::string& processname)
:_cmdfd(cmdfd), _slaverid(pid), _processname(processname)
{
}
int _cmdfd; // 文件描述符
pid_t _slaverid; // 子进程的pid
std::string _processname; // 子进程的名字
};
void slaver()
{
// read(0)
while(true)
{
int cmdcode = 0;
int n = read(0, &cmdcode, sizeof(int)); // 如果父进程不给子进程发送数据呢??阻塞等待!
if(n == sizeof