Каковы эквиваленты замены какао или углерода устаревших многопроцессорных служб в OSX?
Поэтому я работаю над обновлением большого проекта с очень старого кода C++/Carbon и продолжаю работать с устаревшими функциями.
Поэтому я думаю, что есть 2 аспекта этого вопроса.
Ближайший вопрос:
Что следует использовать вместо следующих функций, которые устарели в 10.7? Существуют ли какао-эквиваленты или обновленные углеродные эквиваленты?
MPCreateEvent MPDeleteEvent MPWaitForEvent MPSetEvent
И вторая часть вопроса: есть ли место на сайте разработчиков Apple - или где-то еще - где я могу найти больше информации о том, что следует использовать в случаях, когда старый код официально устарел?
1 ответ
Прежде всего, вы должны прочитать Руководство по программированию параллелизма. Есть несколько способов достижения параллелизма в приложениях Какао, и это руководство объясняет их все подробно.
Вероятно, наиболее близким аналогом функций Carbon являются различные функции Grand Central Dispath (GCD), которые позволяют запускать код в фоновом процессе, передавая блок Objective-C:
dispatch_queue_t aQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(aQueue, ^{
NSLog(@"Do some work in the background here.");
});
Все это подробно объясняется в документах по параллелизму. К сожалению, мне не удалось найти какую-либо документацию об устаревании многопроцессорного API. Тем не менее, этот API очень старый, начиная с Mac OS X, и я подозреваю, что Apple полагает, что большая часть кода, использующего его, давно устарела. Я не завидую твоей задаче!
Обратите внимание, что GCD и блоки были введены в 10.6. Если по какой-либо причине вам нужна поддержка 10.5, вы можете использовать NSOperation
методы, которые были введены в этой версии ОС. Они не так просты в использовании, как GCD, но могут достичь аналогичного результата. NSOperation
все еще доступен и очень хорош для определенных случаев использования.