如何将数据从主应用程序传递到线程?
在主应用程序中,我创建了一个线程来处理错误消息。在主应用程序中处理数据时,如果出现错误,它会生成错误消息并将其填充到结构中。此错误消息(结构)需要传递给线程,然后线程将进一步处理它,主应用程序应继续其工作。我正在尝试在 Windows 平台上的 C 中执行此操作。
我的应用程序中只会运行一个线程。目前我已经定义了一个全局变量结构(myData),我正在使用 PostThreadMessage 传递它。
struct myData errorData;
从主应用程序发布消息使用
PostThreadMessage(ErrorLogId, THRD_MESSAGE_EXIT , 0 , (LPARAM)&errorData);
在我有的线程中
MsgReturn = GetMessage(&msg, NULL, THRD_MESSAGE_SOMEWORK, THRD_MESSAGE_EXIT);
目前它工作正常。但是如果处理错误消息需要更多时间,到那时主应用程序可能会得到新的错误并更新全局结构 errorData 中的数据。
我可以使用锁定机制,但在线程完成处理之前我无法停止主应用程序。如何在不将数据作为全局变量的情况下传递数据?