Поделитесь кто как работает с многопоточностью: task queue, thread pool ... Когда boos был в проекте, то использовал boost::asio, там где chromium то неплохо помогал base::Thread и все вокруг этого. А вот в маленькие проекты не хочется все это тянут.
Тут нужно уточнить, для чего именно используется многопоточность. Если для распараллеливания каких-то тяжелых вычислительных задач, то имеет смысл смотреть в сторону инструментов вроде OpenMP, HPX, TBB, taskflow. Грубо говоря, смысл всего этого в том, чтобы за счет использования множества ядер сократить время выполнения какой-то операции. Например, на одном ядре что-то считаем или перекодируем за 60 минут. На шести ядрах за 10 минут.
Если для того, чтобы упростить себе (почти) одновременное выполнение кучи разнообразных активностей, то тут другой набор инструментов: MS PPL, CAF, SObjectizer, rotor, actor-zeta, Asio. Смысл всего этого в том, чтобы делать разнородные вещи не сильно задумываясь о том, что происходит вокруг. Например, условный сервер БД: принимает подключения, принимает данные, парсит пришедший запрос, строит план, выполняет план с учетом кэшей и пр., подготавливает результаты для отсылки, отсылает в сеть. Что-то из этого можно делать на общем контексте, что-то нужно разносить по разным.
Так что сама по себе многопоточность — это только инструмент для решения какой-то задачи. И в зависимости от задачи многопоточность может применяться по разному и готовить ее нужно с помощью разных инструментов.
Прошу прощения за капитанство.