如何将数据从主应用程序传递到线程?
在主应用程序中,我创建了一个线程来处理错误消息。在主应用程序中处理数据时,如果出现错误,它会生成一条错误消息并将其填充到一个结构中。此错误消息(结构)需要传递给线程,该线程将进一步处理它,主应用程序应继续其工作。我正在尝试在 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 中的数据。
我可以使用锁定机制,但在线程完成处理之前我无法停止主应用程序。如何在不将数据作为全局变量的情况下传递数据?
最佳答案
每次您要调用 PostThreadMessage()
时,您可能希望创建一个新的 struct myData
实例。
线程在完成时需要free()
struct myData
实例。
在您当前的方法中添加同步将违背在主任务继续进行时生成工作人员的异步概念。
无论如何,线程仍然需要在它们这边使用同步,例如在将某些内容写入共享日志文件的情况下。
关于c - 如何将数据(结构)作为消息传递给线程。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13045442/