使用 mfc 对结构进行多线程处理

Posted

技术标签:

【中文标题】使用 mfc 对结构进行多线程处理【英文标题】:multithreading of structure using mfc 【发布时间】:2014-03-05 09:27:44 【问题描述】:

有一个mfc远程桌面应用程序,结构是用proxyserver写的。

如何将此结构转换为多线程?

struct sAccept

    CTCPSocket * m_pAccept;
    CString m_csAlias;
    CString m_csIp;
    BOOL m_bRDV;
    bool operator < (const sAccept & rhs) const return *m_pAccept < *(rhs.m_pAccept);
    std::set<CString> m_Viewers;

;

【问题讨论】:

结构不能是多线程的,但程序可以。你需要提供更多关于你的程序的细节,你正在做什么,你想要完成什么,以及为什么你认为多线程可能是好的。 感谢您的回复,我不能将结构指针放在线程中吗?我的应用程序桌面代理服务器是单线程的,我想让它成为多线程的。当并发数据传输应用程序期间的流量更多时不响应状态。为了避免 exe 挂起,想让它成为多线程的。如果我把这个结构指针放在线程中,它会有所帮助,而不是 socket 类 多线程需要在辅助线程中执行函数。数据和指针不会使任何东西成为多线程的。 // 将数据包发送到所有连接的客户端 void Crp::SendToAllConnectedClients(CPacket & Packet) std::vector vAliases; std::set::iterator itAccept = m_setAccept.begin(); for (;itAccept != m_setAccept.end();++itAccept) // 定位服务器 if (!itAccept->m_bRDV && Packet.m_csServer == itAccept->m_csAlias) // 定位此服务器的查看者 std ::set::iterator itView = itAccept->m_Viewers.begin(); for (;itView != itAccept->m_Viewers.end();++itView) @user3347271 不要在 cmets 中发布其他代码。相反,请更新您的问题以反映更新或说明。 【参考方案1】:

如果您使用的是 MFC 套接字类,本文将展示如何使用 Detach 和 Attach 成员函数将套接字传输到另一个线程。

http://support.microsoft.com/kb/140527

【讨论】:

谢谢,但我想把上面的方法放在多线程中。代码是共享的。我试过但它没有按预期工作。

以上是关于使用 mfc 对结构进行多线程处理的主要内容,如果未能解决你的问题,请参考以下文章

怎么在基于对话框的MFC程序中实现多线程?

怎么在基于对话框的MFC程序中实现多线程?

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

如何使用多线程处理缓存的数据结构(例如 openmp)

在进行多线程处理时保存数据

mfc如何使用多线程搜索文件夹?