メイン アプリケーションからスレッドにデータを渡すにはどうすればよいですか?
メイン アプリケーション内に、エラー メッセージを処理するためのスレッドを作成しました。エラーが発生した場合、メイン アプリケーションでデータを処理しているときに、エラー メッセージが生成され、それが構造体に書き込まれます。このエラー メッセージ (構造) は、スレッドに渡されてさらに処理される必要があり、メイン アプリケーションは作業を続行する必要があります。WindowsプラットフォームのCでこれをやろうとしています。
アプリケーションで実行されるスレッドは 1 つだけです。現時点では、グローバル変数構造 (myData) を定義しており、 PostThreadMessage を使用してそれを渡しています。
struct myData errorData;
メインアプリケーションからメッセージを投稿する
PostThreadMessage(ErrorLogId, THRD_MESSAGE_EXIT , 0 , (LPARAM)&errorData);
私が持っているスレッドで
MsgReturn = GetMessage(&msg, NULL, THRD_MESSAGE_SOMEWORK, THRD_MESSAGE_EXIT);
現時点では問題なく動作しています。ただし、エラー メッセージの処理に時間がかかる場合は、それまでにメイン アプリケーションで新しいエラーが発生し、グローバル構造体 errorData のデータが更新される可能性があります。
ロック機構を使用できますが、スレッドの処理が完了するまでメイン アプリケーションを停止できません。グローバル変数として持たずにデータを渡すにはどうすればよいですか?