boost::asio, custom io service and queue
От: Ablex  
Дата: 21.12.18 11:01
Оценка: 6 (2)
Здорова всем.

Короче, давит на меня сильно прошлый опыт реализации всего этого асинхронного добра врукопашную.
В связи с чем никак не могу решиться перейти на asio.
Наворочено там слоев абстракции — пугает.

В общем вопрос у меня простой (не обязательно ответ тоже). Вот есть у меня события, интрузивные, есть под них очередь — интрузивная. Раньше я ее раскручивал через poll + self-pipe trick.
Можно как-то мне эту очередь через asio раскрутить?
Я вот знаю, что у io_service есть своя очередь внутри. Мне она не нужна. Могу я написать свой io_service со своей очередью,
а от asio взять только кроссплатформенное мультиплексирование? Насколько это противоречит идеологии библиотеки?
Где почитать про это?
Спасибо, ребят, за ответы.
asio custom
Re: boost::asio, custom io service and queue
От: reversecode google
Дата: 21.12.18 14:00
Оценка:
никогда не мог понять программистов которые не могут понять архитектуру опенсорс проекта
исходники есть, откройте, изучите и все вопросы отпадут

асио сверху снизу по бокам и изнутри весь завязан на себе
его можно как то костомайзить но без него нельзя

вообще архитектура асио проста до безобразия
свой асио на коленке за день два не давясь печеньками можно набросать

а можно взять фючерс+промисы+корутины и сварганить по типу яндекса
и будет вообще улет
https://www.youtube.com/watch?v=cEbGlHNcIl4
https://www.youtube.com/watch?v=g7dno0SupKY

интересный вопрос, а что вы используете сейчас ?
блокирующие сокеты и миллион треидов ?
Re[2]: boost::asio, custom io service and queue
От: Ablex  
Дата: 23.12.18 14:26
Оценка:
Здравствуйте, reversecode, Вы писали:

R>никогда не мог понять программистов которые не могут понять архитектуру опенсорс проекта

R>исходники есть, откройте, изучите и все вопросы отпадут
Исходники не ответят на вопрос о корректности того или иного подхода с точки зрения идеологии.

R>асио сверху снизу по бокам и изнутри весь завязан на себе

R>его можно как то костомайзить но без него нельзя
Вот и я спрашиваю, как можно ли его закастомазить так, чтобы не нарушить идеологию?
Вот например я беру из гугла такой пример: http://hansewetz.blogspot.com/2014/07/using-queues-with-boostasio-part-i.html
И вижу там, что сущности из очереди все равно потом перекладываются во внутреннюю очередь io_service. Плюс к этому вижу огромное кол-во второстепенного кода, который прячет суть происходящего за своей многословностью. Если представленный подход по ссылке является единственным корректным с точки зрения good practice использования ASIO, то мне он не подходит. У меня уже есть заданная извне инфраструктура и я пытаюсь понять, может ли ASIO в нее вписаться или нет.

R>вообще архитектура асио проста до безобразия

R>свой асио на коленке за день два не давясь печеньками можно набросать
Очень похвально, что вы это можете. Я тоже могу.
Меня совсем другой вопрос интересует.
Вот он:
> Могу я написать свой io_service со своей очередью, а от asio взять только кроссплатформенное мультиплексирование? Насколько это противоречит идеологии библиотеки?

R>интересный вопрос, а что вы используете сейчас ?

R>блокирующие сокеты и миллион треидов ?
Вот именно собственный "ASIO" у меня и есть. Вы как будто пост не читали? Сразу лишь бы ткнуть ТС побежали ответ писать, да?
Как упоминание poll могло привести вас к мысли о миллионе тредов и блокирующих сокетах?
Да и о сокетах речи не шло, пока что.
Как и многопоточности.
Отредактировано 23.12.2018 14:30 Ablex . Предыдущая версия .
Re[3]: boost::asio, custom io service and queue
От: reversecode google
Дата: 23.12.18 14:35
Оценка:
как я вижу ваш вопрос

у меня есть колеса от самоката
могу ли я их приспособить к самолету ?
просто я уже привык к ним у меня вся инфраструктура двора заточена под колеса самоката
но хочется еще и самолет в ангар
а инфраструктуру ломать не хочется

и как бы вы смогли ответить если бы сами себе задали этот вопрос ?
Re[3]: boost::asio, custom io service and queue
От: reversecode google
Дата: 23.12.18 14:40
Оценка:
если у вас есть свой асио то зачем вам бустовский асио ?
если вы хотите перейти на бустовский асио то выбрасывайте свой асио

асио работает в трех режимах
youtu.be/7FQwAjELMek?t=1341 three threading models
поэтому и нужны все эти хитро сплетения очередей
допустим закрыв глаза вы выбросите все ядро очередей в асио
иии что у вас остается ?
обвязка хендлеров асио + ваше ядро = для чего ?? профит какой ?
Re[4]: boost::asio, custom io service and queue
От: Ablex  
Дата: 23.12.18 14:42
Оценка:
Здравствуйте, reversecode, Вы писали:

R>и как бы вы смогли ответить если бы сами себе задали этот вопрос ?

Я бы дал ссылку на информацию или сам написал пример, использования io_service с кастомной очередью.
Или сказал, бы что это неосуществимо в заданных условиях.
Re[5]: boost::asio, custom io service and queue
От: reversecode google
Дата: 23.12.18 14:47
Оценка:
Здравствуйте, Ablex, Вы писали:

A>Здравствуйте, reversecode, Вы писали:


R>>и как бы вы смогли ответить если бы сами себе задали этот вопрос ?

A>Я бы дал ссылку на информацию или сам написал пример, использования io_service с кастомной очередью.
A>Или сказал, бы что это неосуществимо в заданных условиях.

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

но думаю это не то что вы хотите
поскольку свой асио к этому вы не прикрутите

я все же не понимаю зачем вы пытаетесь свой асио интегрировать в существующий асио ?
Re[4]: boost::asio, custom io service and queue
От: Ablex  
Дата: 23.12.18 14:51
Оценка:
Здравствуйте, reversecode, Вы писали:

R>если у вас есть свой асио то зачем вам бустовский асио ?

Мой асио Linux-specific.

R>если вы хотите перейти на бустовский асио то выбрасывайте свой асио

С радостью, если пойму, что смогу его использовать в нужном ключе.

R>асио работает в трех режимах

R>youtu.be/7FQwAjELMek?t=1341 three threading models
R>поэтому и нужны все эти хитро сплетения очередей
За видео спасибо. Это уже что-то.

R>допустим закрыв глаза вы выбросите все ядро очередей в асио

R>иии что у вас остается ?
R>обвязка хендлеров асио + ваше ядро = для чего ?? профит какой ?
Я ж написал. У меня очередь — интрузивная. События в очереди — интрузивные. В ASIO очередь не интрузивная.
Мой вопрос в том, можно ли отмасштабировать ASIO на мой случай или нет.
Эмоций ваших не понимаю. Если вы считаете, что нельзя — так и скажите, к чему эти риторические вопросы с кучей вопросительных знаков?
Re[5]: boost::asio, custom io service and queue
От: reversecode google
Дата: 23.12.18 15:01
Оценка:
A>Я ж написал. У меня очередь — интрузивная. События в очереди — интрузивные. В ASIO очередь не интрузивная.
A>Мой вопрос в том, можно ли отмасштабировать ASIO на мой случай или нет.
A>Эмоций ваших не понимаю. Если вы считаете, что нельзя — так и скажите, к чему эти риторические вопросы с кучей вопросительных знаков?

у меня нет никаких эмоций кроме очень большого удивления
я не могу сказать можно или нельзя пока не пойму что же вы хотите сделать

все мультиплексоры в реакторах работают по одной схеме

но я знаю ответ на ваш вопрос
что бы понять подойдет ли вам асио под ваше решение
вам надо взять и написать пару простых примеров с использованием асио

иначе нужно будет выкладывать ваш линукс специфик что бы мы все на форуме дружно посмотрели и сказали может ли он быть совместим с существующим асио

самый простой апи кастомного асио

 reactor io;
 int socket = ...
 io.add(socket_handler, func_write);
 io.run_loop();

какая разница где там и какая очередь внутри реактора ?
этот код с легкостью переделывается под буст асио
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.