Boost.Thread или просто:: поток?

Я еще не пользователь Boost. Я, однако, планирую вникнуть в это как можно скорее. Однако меня мало беспокоит Boost и вероятные будущие коллизии или различия имен с грядущим C++0x. (Возможно, это не настоящая проблема, но, например, я нахожу синтаксис boost lambdas довольно уродливым, BOOST_FOREACH агрессивным для глаз и другими только эстетическими личными взглядами).

Я действительно заинтересован в TR2, который, кажется, реализуется библиотеками Boost.Thread и just:: thread. Оба, кажется, написаны и поддерживаются Энтони Уильямсом.

Но просто:: поток заявляет, что он полностью соответствует TR2.

Я хотел знать, если кто-нибудь из вас укажет мне использовать тот или другой. just::thread не является бесплатным, но если это действительно так же, как TR2, я испытываю искушение.

Есть мысли?

3 ответа

Решение

В настоящее время я экспериментирую в Linux с библиотеками boost, just::thread и так называемыми "экспериментальными" функциями C++Ox компилятора gcc g++ 4.5. Что касается многопоточности, которую мне нужно нажать, я нашел код, который я написал для just:: thread и компилятора g ++, который на 100% совместим. Буст-библиотеки (1.43) заметно не совместимы с первыми двумя. Однако для моего производственного кода я использую библиотеки повышения.

Столкновение имен не должно быть проблемой при правильном и разумном использовании доступных пространств имен в boost, just::thread и компиляторах g ++. У меня нет проблем с использованием just:: thread с функциями C++Ox g++; действительно, просто:: thread рекомендует использовать эти функции, например, шаблоны с переменными параметрами.

Я думаю, что еще рано говорить о том, что библиотека "точно такая же, как TR2". TR2 будет выпущен после C++0x, который сам еще не был выпущен.

Тем не менее, библиотека Boost.Thread также утверждает, что следит за развитием в Комитете по стандартизации.

Я бы предпочел любую библиотеку Boost по сравнению с ее "оригинальной", потому что Boost стремится к высокому качеству, а сообщество Boost поддерживает библиотеки совместно, а не частную библиотеку, которая только что перешла на повышение.

Вам не нужно бояться именных столкновений, так как то, что в настоящее время находится в boost:: Пространство имен останется в пространстве имен, и весь материал TR2, вероятно, перейдет в std::tr2::,

Лучший совет на данный момент - ничего из вышеперечисленного:-)

Если у вас нет абсолютно насущных потребностей, вы сэкономите много времени и сил, просто подождав, пока сначала установится C++0x, что займет около 2 лет. Если кто-то просит вас преследовать движущиеся цели - попросите сначала посмотреть на деньги:-) и крупный слуга:-))

Как и во многих других случаях, лучше сначала спросить себя "каковы мои реальные потребности"? Если он изучает многопоточную разработку, то потратить время на C# или Java будет намного проще. Если вам нужно начать разработку системы производственного уровня, то вы уже знаете свою целевую платформу, и лучшее, что вы можете сделать, - это использовать проверенную библиотеку для многопоточности на целевой платформе и иметь полную поддержку отладчика., Просто повторю еще раз - полная поддержка и интеграция отладчика - вот что решает качество вашей жизни в мире потоков.

Если вы дотронетесь до Boost, убедитесь, что у вас есть достаточно времени, чтобы убедиться, что у него нет зависимостей от дюжины других файлов Boost-нечто, а затем еще от дюжины... если вы не поклонник, то есть:-) Если вы дотрагиваетесь до библиотеки Он заявляет, что автоматическое обнаружение дедлоков должно быть готово платить за циклы процессора и справляться с потенциально нежелательными помехами.

Другие вопросы по тегам