스레드 중 하나에 메시지 펌프가있는 다중 스레드 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