четверг, 25 марта 2021 г.

[prog.c++] Мне кажется, что с SObjectizer-ом гораздо лучше видно где, когда и какие треды создаются внутри приложения

В течении последних нескольких лет мне доводилось применять SObjectizer не так часто, как хотелось бы. Ибо если я не писал новый код для RESTinio и самого SObjectizer-а, то в виде халтур занимался приведением в чувства чужого кода. Иногда более-менее нормального, но чаще далеко не нормального. В любом случае там не было не то, что SObjectizer-а, но даже и какого-то намека на стройный механизм обмена сообщениями. Голая многопоточность во всей красе: треды, мутексы и весь сопутствующий фарш.

Так вот, постепенно пришел к выводу, что помимо прочего в SObjectizer гораздо лучше видно сколько и каких рабочих потоков (тредов) создается, где и когда это происходит.

В SObjectizer ты имеешь дело с агентами. Агенты сами никаких нитей (тредов) не запускают. Такими вещами занимаются диспетчеры.

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

Тогда как изучая код, использующий голую многопоточность, приходится обращать внимание на то, где появляются экземпляры std::thread (или какие-нибудь самодельные обертки над POSIX Threads). Зачастую такие экземпляры являются членами какого-то класса. Типа service_manager или session_listener. И стартуют/останавливаются рабочие нити в каких-то методах этих самых service_manager/session_listener/им-подобных-классов. Что не так-то и просто обнаружить. А обнаружив потом еще и держать в памяти: "О, вот этот объект запустил рабочую нить, а затем этот объект переходит в подчинение вот этому, а нить останавливается тогда, когда..."

В общем, привыкаешь к хорошему (это я про SObjectizer), расслабляешься, теряешь нюх на неприятности... :(

вторник, 23 марта 2021 г.

[life.music] Продолжение саги о выборе хороших, но недорогих наушников на Aliexpress. Пару слов о самом выборе

Во второй части попробую рассказать об аспектах, которые имеет смысл принимать во внимание при выборе наушников.

Какие-то из них могут стать принципиально важными. Например, тип и форма наушников, т.к. если вы знаете, что заушные внутриканалки вам не садятся в принципе, то нет смысла и смотреть в эту сторону.

Какие-то аспекты (вроде съемного кабеля) наверняка будут лишь дополнительным фактором.

В общем, давайте пробежимся по некоторым вещам, которые лично мне хотелось бы знать заранее, но которые пришлось осваивать самостоятельно.

Поскольку вся эта серия посвящена закупке наушников на Aliexpress, то и картинки для иллюстраций я без зазрения совести утащил именно оттуда.