Проблемы межкомпонентного общения - PullRequest
0 голосов
/ 21 апреля 2011

В моем приложении у меня есть два потока, во-первых, это поток графического интерфейса, где у меня есть код, который вызывается, когда пользователь нажимает каждую кнопку.

Во втором потоке у меня есть механизм записи видео, с которого я могу начатьзахватить, добавить (записать) видео в файл.

Проблема возникает, когда я пытаюсь «начать запись» с первого потока - происходит сбой.Поэтому я должен установить какие-то логические «коммуникационные флаги» в потоке графического интерфейса, а затем проверить их в видеопотоке, а затем «записать видео» из видеопотока.и правильный способ сделать это?

1 Ответ

2 голосов
/ 21 апреля 2011

Это довольно широкая тема, которую вы затрагиваете. Какао действительно содержит некоторые полезные методы связи между нитями. Вы можете посмотреть на

[NSObject performSelector:onThread:withObject:waitUntilDone:]

Это будет работать только в том случае, если у вас запущен NSRunLoop во втором потоке. В противном случае используйте bool @property в вашем классе записи видео. Это будет флаг, который вы предложили. Измените его значение из основного потока и проверьте его значение из дополнительного потока в цикле записи, чтобы выполнить действие.

Не забывайте, что ваше объявление @property должно быть атомарным.

Вы также можете использовать NSOperationQueue или блоки, из вашего вопроса сложно сказать, что будет работать лучше всего. Полагаю, зависит также и от ваших предпочтений в кодировании.

...