int swFactoryProcess_start(swFactory *factory) { if (swFactory_check_callback(factory) < 0) { swWarn("swFactory_check_callback fail"); return SW_ERR; } swServer *serv = factory->ptr; swFactoryProcess *object = factory->object; object->workers_status = SwooleG.memory_pool->alloc(SwooleG.memory_pool, sizeof(char)*serv->worker_num); //worler idle or busy if(object->workers_status == NULL) { swWarn("alloc for worker_status fail"); return SW_ERR; } //必须先启动manager进程组,否则会带线程fork if (swFactoryProcess_manager_start(factory) < 0) { swWarn("swFactoryProcess_manager_start fail"); return SW_ERR; } //主进程需要设置为直写模式 factory->finish = swFactory_finish; return SW_OK; }
int swFactoryProcess_start(swFactory *factory) { if (swFactory_check_callback(factory) < 0) { swWarn("swFactory_check_callback fail"); return SW_ERR; } swServer *serv = factory->ptr; swFactoryProcess *object = factory->object; object->workers_status = SwooleG.memory_pool->alloc(SwooleG.memory_pool, sizeof(char)*serv->worker_num); //worler idle or busy if (object->workers_status == NULL) { swWarn("alloc for worker_status fail"); return SW_ERR; } //保存下指针,需要和reactor做绑定 serv->workers = object->workers; int i; swWorker *worker; for(i = 0; i < serv->worker_num; i++) { worker = swServer_get_worker(serv, i); if (swWorker_create(worker) < 0) { return SW_ERR; } } //必须先启动manager进程组,否则会带线程fork if (swFactoryProcess_manager_start(factory) < 0) { swWarn("swFactoryProcess_manager_start fail"); return SW_ERR; } if (serv->ipc_mode == SW_IPC_MSGQUEUE) { //tcp & message queue require writer pthread if (serv->have_tcp_sock == 1) { int ret = swFactoryProcess_writer_start(factory); if (ret < 0) { return SW_ERR; } } } //主进程需要设置为直写模式 factory->finish = swFactory_finish; return SW_OK; }
int swFactoryProcess_start(swFactory *factory) { if (swFactory_check_callback(factory) < 0) { swWarn("swFactory_check_callback failed"); return SW_ERR; } int i; swServer *serv = factory->ptr; swWorker *worker; for (i = 0; i < serv->worker_num; i++) { worker = swServer_get_worker(serv, i); if (swWorker_create(worker) < 0) { return SW_ERR; } } serv->reactor_pipe_num = serv->worker_num / serv->reactor_num; //必须先启动manager进程组,否则会带线程fork if (swFactoryProcess_manager_start(factory) < 0) { swWarn("swFactoryProcess_manager_start failed."); return SW_ERR; } if (serv->ipc_mode == SW_IPC_MSGQUEUE) { swQueueMsg_set_blocking(&serv->read_queue, 1); //tcp & message queue require writer pthread if (serv->have_tcp_sock == 1) { int ret = swFactoryProcess_writer_start(factory); if (ret < 0) { return SW_ERR; } } } //主进程需要设置为直写模式 factory->finish = swFactory_finish; return SW_OK; }
int swFactoryProcess_start(swFactory *factory) { if (swFactory_check_callback(factory) < 0) { swWarn("swFactory_check_callback fail"); return SW_ERR; } //必须先启动manager进程组,否则会带线程fork if (swFactoryProcess_manager_start(factory) < 0) { swWarn("swFactoryProcess_manager_start fail"); return SW_ERR; } //主进程需要设置为直写模式 factory->finish = swFactory_finish; return SW_OK; }
int swFactoryProcess_start(swFactory *factory) { if (swFactory_check_callback(factory) < 0) { swWarn("swFactory_check_callback fail"); return SW_ERR; } swServer *serv = factory->ptr; swFactoryProcess *object = factory->object; object->workers_status = SwooleG.memory_pool->alloc(SwooleG.memory_pool, sizeof(char)*serv->worker_num); //worler idle or busy if(object->workers_status == NULL) { swWarn("alloc for worker_status fail"); return SW_ERR; } //必须先启动manager进程组,否则会带线程fork if (swFactoryProcess_manager_start(factory) < 0) { swWarn("swFactoryProcess_manager_start fail"); return SW_ERR; } //保存下指针,需要和reactor做绑定 serv->workers = object->workers; #if SW_WORKER_IPC_MODE == 2 //tcp & message queue require writer pthread if (serv->have_tcp_sock == 1) { int ret = swFactoryProcess_writer_start(factory); if (ret < 0) { return SW_ERR; } } #endif //主进程需要设置为直写模式 factory->finish = swFactory_finish; return SW_OK; }