mfc线程里面调用的套接字库会不会随着线程结束而自动释放?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mfc线程里面调用的套接字库会不会随着线程结束而自动释放?相关的知识,希望对你有一定的参考价值。

参考技术A 不会自动释放的。

需要WSACleanup来对应WSAStartup,请看MSDN中这段说明:

An application must call one WSACleanup call for every successful
WSAStartup call to allow third-party DLLs to make use of a Ws2_32.dll on
behalf of an application. This means, for example, that if an application calls
WSAStartup three times, it must call WSACleanup three times. The
first two calls to WSACleanup do nothing except decrement an internal
counter; the final WSACleanup call for the task does all necessary
resource deallocation for the task.本回答被提问者和网友采纳

MFC主线程等待另一个线程结束

【中文标题】MFC主线程等待另一个线程结束【英文标题】:MFC main thread to wait for another thread to end 【发布时间】:2012-01-19 01:29:23 【问题描述】:

我正在尝试使用 MFC 创建工具。该工具的主要工作是对数据进行排序。嗯,我发现工具在排序的时候,因为只有主线程;因此,在它进行排序工作时,不能移动或单击任何对话框。因此,我创建了另一个线程来进行排序工作并且工作正常。

但是我用了一个线程之后还有一个问题。我不知道如何让主线程等待排序线程。我想在排序线程完成后做一些事情,但是现在,主线程只是移动到下一个过程而不等待排序线程完成它的工作。

这里是sn-p

AfxBeginThread(processfiles, tVals) // A thread do its work.

// below I want to do something with the result I got from the thread above. 
//But main thread just do its work separately without waiting for the thread to finish its work.

.

请帮忙谢谢!!

【问题讨论】:

【参考方案1】:

所以编写代码来做到这一点。弹出一个对话框。表示正在进行排序。做你想做的。让其他线程在完成后向您的线程发送信号,例如通过PostMessage 向您发送消息。

【讨论】:

您需要帮助哪一部分?您知道如何让线程发送 Windows 消息吗?你知道如何接收 Windows 消息吗? 我想知道线程如何向主线程发送消息等待。如果你能告诉我一些很棒的代码:) 等待线程完成,就像等待用户按下“确定”(这也是一条 Windows 消息)一样。继续您的业务(这可能意味着返回到您的消息泵),直到您收到线程已完成的消息。 (将线程编码为在完成后调用PostMessage。)您的代码将把线程的完成视为一个事件,就像Windows 向它报告的任何其他事件一样。 See here

以上是关于mfc线程里面调用的套接字库会不会随着线程结束而自动释放?的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中测试套接字库的线程应用程序示例

MFC中如何建立和结束一个线程

c++/mfc 子线程结束后再来执行主线程下操作 该怎么处理

在另一个线程上调用非静态类函数

如何为 MFC 线程设置超时

如何将 IDispatch::Invoke 放入 MFC C++ 线程?