2
我有一个多线程的Windows应用程序,其中一个线程中有一个消息泵。我需要向该线程发送消息,并将消息传递给它。但是,我想在工作线程中使用的一个库需要std :: string。我可以这样做以下:我可以将STL数据结构传递给Win32消息循环吗?
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);
如果这是好的,谁负责释放内存,调用线程或工人线?
N.B.我的印象是,使用Windows消息循环是最简单和最好的方法,但我并不反对使用类似Boost库的东西,如果这更合适的话。但是,这是一个特定于Windows的应用程序,并且只能在Windows上运行,所以跨平台兼容性不是我过分关心的问题。
另一个选择是,如果你频繁使用这样的消息,就是保留一个对象池,那么当你释放它时,它应该返回到池中。 – Ismael 2010-08-18 14:04:48