Я портирование приложения на Mac OS X.PostThreadMessage эквивалент на Mac OS X
Мне нужно сделать следующее задание на Mac OS X тоже. Поток A должен отправить сообщение в очередь сообщений другого потока B. Это сообщение также содержит некоторые пользовательские сообщения. На конкретном сообщении, таком как EXIT_LOOP, поток B выходит из цикла сообщений.
Я начал цикл сообщений для потока B, используя CFRunLoop.
Теперь я не могу найти, как поток А может опубликовать сообщение в теме B.
В Windows это возможно PostThreadMessage. Для этого не может быть прямого порта для Mac OS X, но должен быть способ сделать это на Mac OS X.
Обратите внимание, что поток B не знает о потоке A, но поток A знает поток B.
Окна код:
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.
Что не так с любым старым классом коллекции и некоторой блокировкой потока? – trojanfoe
Я довольно новичок в Mac OS X. Я не знаю, как добиться этого на Mac OS X. Я просто хочу эквивалентную функциональность в Mac OS X. Если возможно использование блокировки потоков, отправьте пример. – doptimusprime
Чтобы сделать его более понятным, я добавил пример кода. – doptimusprime