У меня есть 5 функций, которые нужно запускать в отдельном потоке. Grand Central Dispatch должен быть более эффективным, чем потоки, поэтому я решил использовать его. Каждая функция имеет бесконечный цикл while - while(true)
- который работает в течение всего времени программы. Таким образом, функция не возвращается, пока программа не существует. Дело в том, что GCD не запускает очереди одновременно - он запускает каждый queu один за раз. Когда первый queu завершается, он начинает вторую очередь. Если я помещаю каждую функцию в очередь, запускается только одна из них, потому что Grand Central Dispatch будет ждать, пока первая вернется, чтобы запустить следующую, но функция никогда не вернется (поскольку это бесконечный цикл while). Есть ли способ использовать GCD с бесконечными функциями цикла? Или я должен просто использовать потоки?Использование Grand Central Dispatch с бесконечными циклами?
Xcode 3.2.6 на Mac OSX Snowleopard 10.6.8.
Ваши петли while() должны (a) не быть ожиданными; они не должны зацикливаться, если у них нет реальной работы. И (б), они вообще не должны существовать! Вы должны использовать другую конструкцию, чтобы ждать, пока работа будет доступна. Нитки дороги и расточительны. Даже бездействующие потоки отходов. – bbum
@bbum Мои потоки не заняты, они постоянно извлекают информацию и обновляют ее. Если потоки плохие, есть ли у вас какие-либо другие предложения, которые я мог бы использовать вместо этого, чтобы постоянно получать информацию на протяжении всей программы? – fdh
Что такое источник данных? То есть сеть? Другие темы? и т.д...? – bbum