1. чтобы не наглючить,
2. библиотеки, зачастую, написаны переносимо — значит, приложение может работать на разных платформах,
3. чтобы другой человек, читая код, сразу понимал — что, где и как используется. Одно дело — видеть распространённый паттерн, а другое — видеть очередную реализацию неизвестной работоспособности внутри.
1. Нет, меньше. Чтобы вы подумали, если бы увидели в неком проекте свою собственную реализацию «динамических выделяемых объектов с подсчётом количества ссылок»?
3. Допустим понадобилась бы вам нить-worker, которой можно скармливать задания в runtime'е. Можно, конечно свою написать, но чем она будет лучше, к примеру, boost::asio::io_server'а или аналогов? Её ж не только написать, её же ещё отладить надо будет.
3. Именно это я и реализовал (Delphi), и на с++ бы также поступил, вот правда они сильно специфические.
Хотя, конечно, нужно среди популярных библиотек искать готовые решения, хорошо осматривать и если подходят — принимать за основу, даже если есть небольшой проигрышь в скорости.
опечатка: io_service (сервис, не сервер)
И таки asio на мой взгляд достаточно кривая штука, одна только реализация таймаутов чего стоит. На протяжении трех лет использовал asio в нескольких проектах, зачастую время отладки вещей связанных с сетью из-за него существенно повышалось. В более свежих версиях товарищ Колхофф вроде как сделал более человечную реализацию таймаутов, но не смотрел ее еще. По мне так лучше использовать libev/libevent какой-нибудь, грамотно обернутый. Да и работать шустрее должно.
Есть интересный подход к многопоточности в С++ в стили Эрланга.
Решение вполне кроссплатворменное.
Позволяет освободиться от объектов синхронизации во внешнем коде. Применимо в очень большом спектре задач.
Кого-нибудь заинтересует статья на тему?
Зачем спрашивать заинтересует или нет. Ведь сам процесс написания статьи полезен для усваивания самого материала.
И даже если вы опубликуете, а никому не будет нужно, Вы же от этого не умрете, верно?
в большинстве случаев хватает грамотного использования boost::asio
даже boost::condition_variable отпадает (но есть, конечно, исключения)
то есть проблемы синхронизации при использовании boost::asio::io_service чаще всего не возникают.
Для событий SetEvent или PostThreadMessage (PostMessage на окно)
Для синхронизации Mutex
иногда копирование при записи с применением lock-free алгоритмов
Ожидание результата в multithread приложении — кто что использует?