LINUX.ORG.RU

История изменений

Исправление korvin_, (текущая версия) :

Понимаешь, фраза «в Plan 9 и Inferfno всё рулится каналами (между корутинами) и пламбингом (между процессами)», если понимать ее буквально, совершенно бессмысленна.

Почему? Это просто констатация факта.

но причем тут сам Plan9?

Наверное при том, что в его API сущность «мьютекс» не используется? О чём и спрашивал x3al.

Если под «каналом» имеются в виду средства ОС Plan9 - назови системный вызов или бибилиотечную функцию, которыми они создаются (и вызов создания того, что ты называешь корутинами).

Под каналами имеются в виду те же каналы, что в Go, что в Limbo --- средство взаимодействия (синхронизации) корутин.

Гм... Ты хочешь сказать, что данные между процессами, созданными rfork(RFMEM) используют plumber?

Я хочу сказать, что межпроцессное взаимодействие осуществляется постредством отдельного сервиса --- пламбимнга, а не каналами, которые «существуют» в рамках своего одного процесса. Можешь считать пламбинг-сервис чем-то вроде очереди сообщений MQ (может внутри Plan 9-новый пламбер не является очередью сообщений, но интерфейс примерно тот же с точки зрения пользователя). Других способов межпроцессного взаимодействия в Plan 9/Inferno нет. 9P/Styx везде. Т.е. можно без пламбинга просто писать/читать (псевдо-)файлы того же Acme или Rio; plumber дополнительно играет роль «ассоциатора», т.е. то что в винде и линуксе делается через настройку ассоциации файлов (чтобы картинки открывались в просмотрщике картинок и т.п.) в Plan 9/Inferno делается через пламбер. Пример: (файл-)браузер отправляет во входной псевдофайл пламбера текстовое сообщение, а тот по правилам определяет какому процессу это сообщение передать, т.е. грубо говоря, если подпадает под правило «начинается на http://», то оно передаётся веб-браузеру. Разница между «ассоциациями» файлов в более гибком поведении, на Ютубе вроде есть видео-туториал по acme от Расса Кокса, там есть примеры.

Ну вот для этого и нужны мютексы - реализовывать каналы.

Но это детали реализации. Для использования абстракции знать детали её реализации не нужно, иначе это протекающая абстракция.

Исходная версия korvin_, :

Понимаешь, фраза «в Plan 9 и Inferfno всё рулится каналами (между корутинами) и пламбингом (между процессами)», если понимать ее буквально, совершенно бессмысленна.

Почему? Это просто констатация факта.

но причем тут сам Plan9?

Наверное при том, что в его API сущность «мьютекс» не используется? О чём и спрашивал x3al.

Если под «каналом» имеются в виду средства ОС Plan9 - назови системный вызов или бибилиотечную функцию, которыми они создаются (и вызов создания того, что ты называешь корутинами).

Под каналами имеются в виду те же каналы, что в Go, что в Limbo --- средство взаимодействия (синхронизации) корутин.

Гм... Ты хочешь сказать, что данные между процессами, созданными rfork(RFMEM) используют plumber?

Я хочу сказать, что межпроцессное взаимодействие осуществляется постредством отдельного сервиса --- пламбимнга, а не каналами, которые «существуют» в рамках своего одного процесса. Можешь считать пламбинг-сервис чем-то вроде очереди сообщений MQ (может внутри Plan 9-новый пламбер не является очередью сообщений, но интерфейс примерно тот же с точки зрения пользователя). Других способов межпроцессного взаимодействия в Plan 9/Inferno нет. 9P/Styx везде. Т.е. можно без пламбинга просто писать/читать (псевдо-)файлы того же Acme или Rio; plumber дополнительно играет роль «ассоциатора», т.е. то что в винде и линуксе делается через настройку ассоциации файлов (чтобы картинки открывались в просмотрщике картинок и т.п.) в Plan 9/Inferno делается через пламбер. Пример: (файл-)браузер отправляет во входной псевдофайл пламбера текстовое сообщение, а тот по правилам определяет какому процессу это сообщение передать, т.е. грубо говоря, если подпадает под правило «начинается на http://», то оно передаётся веб-браузеру. Разница между «ассоциациями» файлов в более гибком поведении, на Ютубе вроде есть видео-туториал по acme от Расса Кокса, там есть примеры.