例如,我有2线程。我希望从主线程停止服务器(线程1).
线程1:主程序
线程2: TcpServer
来自利布夫图书馆:
/*
* This function will stop the event loop by forcing uv_run to end
* as soon as possible, but not sooner than the next loop iteration.
* If this function was called before blocking for i/o, the loop won't
* block for i/o on this iteration.
*/
UV_EXTERN void uv_stop(uv_loop_t*);
这意味着,如果我在主线程中调用uv_stop(tcp_server_loop)
,而服务器循环由于tcpserver上没有事件而被阻塞,那么服务器将一直处于循环中,直到某个事件出现。(它可能会检查在循环进入块模式等待新事件之前是否调用了uv_stop
)。
发布于 2014-05-26 08:54:20
如果您使用uv_run运行UV_RUN_DEFAULT,这将是一个阻塞调用。但是,如果使用uv_stop,则uv_run将立即返回。请记住,在uv中,线程安全的唯一函数是uv_async_send,所以如果您想在TcpServer循环上调用uv_stop,您可以从循环中调用它。
https://stackoverflow.com/questions/22330030
复制相似问题