C - 关闭线程

时间:2017-05-21 14:08:20

标签: c multithreading winapi

我使用线程(WindowsAPI)和非阻塞套接字编写了客户端 - 服务器聊天。 当我的客户想要断开连接时(通过键入quit)我想关闭客户端的线程。线程在客户端部分实现,server.c和client.c都处于非阻塞模式。

我被建议使用WaitForSingleObject()函数并编写此代码:

        if (!strcmp(&bufferData[0], "quit\n"))
        {
            send(socketDescriptor, bufferData, strlen(&bufferData[0]), 0);
            printf("You just left the chat. Good bye\n");
            //break;
            running = false;
            int retwait = WaitForSingleObject(hThread, 1000);
            if (retwait == 0)
            {
                printf("WaitForSingleObject error : Error code: %d", GetLastError());
                break;
            }
            if (shutdown(socketDescriptor, SD_BOTH) != 0)
            {
                printf("Shutdown SHUT_RDWR error");
            }
            break;
        }

我比较传入缓冲区和命令行输入的内容。如果"退出" - 关闭线程并关闭。

出了问题因为WaitForSinglebject()每次都返回0并且没有显示错误代码(它始终为0)。我使用了这个函数的不同参数(0,一些值并永远等待)。

我在这里做错了什么? 希望我的问题提供给MCVE。感谢

0 个答案:

没有答案