gpt4 book ai didi

c++ - 我可以将 STL 数据结构传递给 Win32 消息循环吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:00:12 25 4
gpt4 key购买 nike

我有一个多线程 Windows 应用程序,其中一个线程中有一个消息泵。我需要向该线程发送消息,将信息传递给它。但是,我想在工作线程中使用的库之一需要 std::string。我可以做类似以下的事情吗:

typedef struct tagCOMMAND
{
std::map<std::string, std::string> locator;
std::string body;
} COMMAND, *LPCOMMAND;

然后像这样将结构传递给消息:

LPCOMMAND cmd;
cmd->body = "Hello";
cmd->locator["Hello"] = "World";
PostThreadMessage(dwThread, MY_CUSTOM_MESSAGE, NULL, (LPARAM)cmd);

如果没问题,谁负责释放内存,是调用线程还是工作线程?

注意我的印象是使用 Windows 消息循环是这里最简单和最好的方法,但如果更合适的话,我不反对使用像 Boost 库这样的东西。但是,这是一个特定于 Windows 的应用程序,并且只能在 Windows 上运行,因此跨平台兼容性并不是我过分关心的问题。

最佳答案

将指向对象的指针作为异步消息参数传递是正常的,只要有一个接收者(不多也不少)。

释放内存应该是接收方的责任,因为调用方没有指示何时可以安全地执行此操作。

关于c++ - 我可以将 STL 数据结构传递给 Win32 消息循环吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3511295/

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