首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >libuv -如何停止在另一个线程中运行的tcp服务器

libuv -如何停止在另一个线程中运行的tcp服务器
EN

Stack Overflow用户
提问于 2014-03-11 15:23:15
回答 1查看 2.1K关注 0票数 6

例如,我有2线程。我希望从主线程停止服务器(线程1).

线程1:主程序

线程2: TcpServer

来自利布夫图书馆:

代码语言:javascript
运行
复制
/*
 * 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 )。

EN

回答 1

Stack Overflow用户

发布于 2014-05-26 08:54:20

如果您使用uv_run运行UV_RUN_DEFAULT,这将是一个阻塞调用。但是,如果使用uv_stop,则uv_run将立即返回。请记住,在uv中,线程安全的唯一函数是uv_async_send,所以如果您想在TcpServer循环上调用uv_stop,您可以从循环中调用它。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22330030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档