private void WaitToStop(ZMQ.ZMQDevice.WorkerPool pool) { while (true) { var cmd = base.ReceiveControlCommand(); if (cmd == "STOP-RPC" && pool.IsRunning) { LoggerProvider.EnvironmentLogger.Info( "'STOP-RPC' command received, try to stop the WorkerPool..."); StopWorkerPool(pool); break; } } }
private static void StopWorkerPool(ZMQ.ZMQDevice.WorkerPool pool) { Debug.Assert(pool != null); Debug.Assert(pool.IsRunning); pool.Stop(); //等待 WorkerPool 停止 while (pool.IsRunning) { Thread.Sleep(20); } Debug.Assert(!pool.IsRunning); }
private void WorkerProc() { var workersUrl = this.RpcHandlerUrl; var hostUrl = this.RpcHostUrl; LoggerProvider.EnvironmentLogger.Info(() => string.Format( "Starting all RPC-Handler threads: RPC-Entrance URL=[{0}],RPC-Hander URL=[{1}]", hostUrl, workersUrl)); using (var pool = new ZMQ.ZMQDevice.WorkerPool( hostUrl, workersUrl, ServiceDispatcher.ProcessingLoop, (short)this.RpcHandlerMax)) { this.WaitToStop(pool); } }
private static void Server() { var pool = new ZMQ.ZMQDevice.WorkerPool("tcp://*:5555", "inproc://workers", Worker, 5); Thread.Sleep(Timeout.Infinite); }