Boost.Thread или просто :: поток? - PullRequest
5 голосов
/ 24 августа 2010

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

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

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

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

Есть мысли?

Ответы [ 3 ]

5 голосов
/ 24 августа 2010

В настоящее время я экспериментирую на 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 рекомендуется использовать эти функции, такие как шаблоны с переменными координатами.

4 голосов
/ 24 августа 2010

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

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

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

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

0 голосов
/ 25 августа 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...