アプリケーションを Mac OS X に移植しています。
Mac OS X でも次のタスクを実行する必要があります。スレッド A は、別のスレッド B のメッセージ キューにメッセージを投稿する必要があります。これらのメッセージには、いくつかのカスタム メッセージも含まれます。EXIT_LOOP のような特定のメッセージで、スレッド B はメッセージ ループから抜け出します。
CFRunLoop を使用して、スレッド B のメッセージ ループを開始しました。
スレッド A がスレッド B にメッセージを投稿する方法がわかりません。
Windows では、これは PostThreadMessage である可能性があります。このための Mac OS X への直接の移植はないかもしれませんが、Mac OS X でそれを行う方法があるに違いありません。
スレッド B はスレッド A を認識していませんが、スレッド A はスレッド B を認識していることに注意してください。
Windows コード:
MessageLoop () {
MSG message;
BOOL ret;
while(ret = GetMessage(&message, NULL, 0, 0) != 0) {
if(ret == -1)
break;
if(UseMessage(message) = EXIT)
break;
}
}
int UseMessage (MSG Message)
{
switch(Message) {
//Process various messages.
case I_AM_COMPLETE:
return EXIT;
}
}
//Thread A:
MessageLoop ();
//Cleanup
//Thread B:
PostThreadMessage(threadidofA, I_AM_COMPLETE, 0, 0);
このコードにより、より明確になると思います。Mac OS X で同等の機能が必要です。