在这种情况下我应该使用terminatethread吗? [英] Should I use terminatethread in this situation?

查看:150
本文介绍了在这种情况下我应该使用terminatethread吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





这个循环无限期地在一个单独的std :: thread上运行,除非我将 listen 设置为真正。问题是,如果用户决定关闭服务器,我无法终止循环,因为 accept 阻塞线程,直到建立连接。有没有比使用 TerminateThread 更好的方法?



Hi,

This loop runs indefinitely on a separate std::thread unless I set listening to true. The problem is, I can't terminate the loop if the user decides to shutdown the server because accept blocks the thread until a connection is established. Is there a better approach than to use TerminateThread?

while (_this->listening)
{
    SOCKET client;
    sockaddr_in from;
    int fromlen = sizeof(from);

    client = accept(*server_socket, (sockaddr*)&from, &fromlen);
    printf("Client connected\r\n");

}





我的尝试:



------------------------------------ ---------------------



What I have tried:

---------------------------------------------------------

推荐答案

你需要从另一个线程关闭server_socket,在这种情况下accept函数立即返回。请注意,如果侦听套接字关闭,则accept函数将失败并且不会返回有效的套接字句柄,因此您需要在发生这种情况时退出循环。
You need to close server_socket from another thread, in this case accept function returns immediately. Note that accept function fails and doesn't return valid socket handle, if listening socket is closed, so you need to exit the loop when this happens.


这篇关于在这种情况下我应该使用terminatethread吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆