Я использую Boost.Thread и рекомендую его другим.
Он переносим практически на все и прост в использовании.«Легкая» вещь - единственный вопрос, так как я не совсем уверен, что это значит.Boost облегчен тем, что его использование почти не требует дополнительных затрат, так как все функции многопоточности - это слабая статическая упаковка для базовой библиотеки многопоточности (pthreads
, Win32 API, Cell BE и т. Д.).«Мьютекс» - это на самом деле все, что реализует эту концепцию «блокировки» (см. документация ), которая может быть чем угодно - даже вашим собственным специальным назначением.В этом смысле он очень легкий и расширяемый.
Однако , Boost - это огромная библиотека, и вытащить только те ее части, которые вам нужны, может быть очень больно (это обычная жалоба на Boost в целом).Вдобавок ко всему, использование Boost.Thread означает, что у вас должны быть Boost.DateTime, Boost.System, Boost.ConceptCheck и Boost.Compiler (и, вероятно, больше и все, на что они полагаются и т. Д.).К их чести, очень легко создать то, что вам нужно, если у вас есть целая библиотека из-за их волшебства автоматического связывания, но необходимость иметь все это, безусловно, нужно учитывать, особенно если Windows находится в списке целей.
В качестве альтернативы Boost, я бы порекомендовал OpenMP , предполагая, что ваш компилятор поддерживает его.Тот факт, что он требует поддержки компилятора для некоторых более продвинутых функций, может дисквалифицировать его на «легковесной» вещи, но он довольно легок в использовании (первый раз, когда вы #pragma omp parallel for
будете довольно аккуратны).Он не такой функциональный, как Boost (я думаю, что здесь может конкурировать только Qt), но использование OpenMP дает вам действительно классные функции, которые не может сделать ни одна другая библиотека потоков.Вам придется использовать несколько современный компилятор, но и GCC, и MSVC имеют здесь хорошую поддержку.Одно предостережение в том, что это действительно библиотека C, что я считаю недостатком, если вы работаете с C ++, но это может быть полезно для ваших требований.
Если вы ищете что-то значительно большеелегкий (в обоих смыслах этого слова), тогда я бы порекомендовал OpenThreads .Он далеко не такой расширяемый, как Boost, и он менее производительный (хотя и незначительный), он довольно хорошо разработан и заслуживает упоминания.Он поразит все ваши указанные цели (Windows, OSX и Linux), поэтому, если у него есть нужные функции, перейдите к нему.
Также, Википедия .