Форум Orsha-LUG

Портал => Новости => Тема начата: Sacren от 12 Сентябрь 2009, 02:49:27



Название: Apple выпустила диспетчер потоков Mac OS X под открытой лицензией
Отправлено: Sacren от 12 Сентябрь 2009, 02:49:27
Одним из основных нововведений очередного релиза операционной системы Mac OS X Snow Leopard от компании Apple стала технология центральной диспетчеризации (Grand Central Dispatch), исходные коды которой выпущены под открытой лицензией Apache License v2. Библиотека не зависит от фреймворка Cocoa, написана на языке Си и должна значительно облегчить разработку программ, использующих современную многоядерную процессорную архитектуру.

Технология Grand Central Dispatch — это ответ Apple на проблему параллельного программирования. С развитием современных процессоров, содержащих на одном кристалле два и более ядра, обычный домашний компьютер технологически стал похож на многопроцессорный сервер. И чтобы использовать его вычислительный ресурс на все 100% требуется каким-то образом разделить монолитную программу на ряд параллельно исполняемых независимых «нитей» (threads). Кажущаяся простота реализации этой идеи на практике даже у самых опытных программистов сопровождается такими неприятными побочными эффектами, как мертвые блокировки (deadlocks) и состояние гонки (race conditions). Связано это с тем, что различные «нити» требуют доступа к одним и тем же ресурсам, причем, зачастую одновременно.

С появлением GCD задача управления потоками целиком перекладывается на эту технологию. Предпосылка к этому очень проста: программист на этапе написания кода просто не может знать какая самая оптимальная конфигурация многопоточности будет в момент исполнения программы. Иерархический дизайн GCD позволяет рабочим потокам обмениваться сообщениями не только с родительским процессом, но и между собой. Из соображений совместимости с предыдущими версиями Mac OS X диспетчер вынесен в отдельный модуль ядра.

Тем не менее, необходимо заметить, что Grand Central Dispatch сам по себе никак не решает проблему параллельных вычислений, оставляя выбор за разработчиком, какие участки кода и когда могут выполняться одновременно.

CTRL+Ced from: http://www.opennet.ru/opennews/art.shtml?num=23382