gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 15:11:31 25 4
gpt4 key购买 nike

例如我有 2 个线程 .我要从主线程(线程 1)停止服务器。

线程1:主程序

线程 2:TcpServer

来自 libuv 库:

/*
* 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 是否被调用)。

最佳答案

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

关于libuv - 如何停止在另一个线程中运行的 tcp 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22330030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com