| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > [Многопоточность]C++98 vs C++11 |
| Автор: drug007 18.8.2014, 14:29 |
| Добрый день. Есть необходимость сравнить стандарт C++98 vs C++11 с точки зрения разработки многопоточных приложений. Виртуально я понимаю, что разница в пользу C++11, но поскольку реального опыта немного, хотелось бы спросить у опытных людей, кто писал и там и там - есть ли разница на практике и насколько она большая? Future/promises/et al это все хорошо, но возможно на практике их мало используют по каким-либо причинам? Может кто опытом поделиться? P.S. основной контекст вопроса: добавит ли переход на C++11 продуктивности разработчикам или это больше сахар/мода/другое и можно спокойно оставаться на С++98, ничего не потеряем |
| Автор: NoviceF 18.8.2014, 14:55 |
| С++98 не знает о потоках ничего. Вообще. Поддержка многопоточности реализована сторонними библиотеками, например, Boost.Thread, pthread(для Posix совместимых ОС) и т.п. |
| Автор: drug007 18.8.2014, 15:04 |
| Так я это и имею в виду - в C++98 пилить ручками нужно, а в С++11 многое есть из коробки. Поэтому виртуально С++11 выигрывает. Но как это выглядит на практике? Не является ли эта сторона стандарта малоиспользуемой фичей? Возможно так какие-то подводные камни и люди попробовав продолжают писать ручками через pthread/boost? |
| Автор: NoviceF 18.8.2014, 15:30 |
| drug007, не юзаю c++11, но могу сказать, что потоковая часть c++11 по сути и есть Boost.Thread. Если бы у меня был выбор - использовал бы c++11 без раздумий. И вообще я бы пошёл от обратного, какие есть возражения против того, чтобы использовать c++11? Если уже есть проект - ничего не мешает перекомпилить его новым компилятором, с обратной совместимостью проблем возникнуть не должно, а новые части проекта писать уже с использованием фич одиннадцатых плюсов. |
| Автор: drug007 18.8.2014, 17:15 |
| Да я вот хочу как раз убедить народ, что нужно переходить на С++11. Просто вдруг есть контаргументы - вот решил спросить на всякий случай. |
| Автор: tzirechnoy 19.8.2014, 09:36 |
| Контраргумент: код, реализующий pthreads -- гораздо меньшэ, написан в меньшэм количестве мест, сравнительно легко смотрится при помощи gdb и не использует всякой плюсовой магии по оборачиванию шаблонов и параметризацыи функцый в периоде компиляцыи. Его работу проще понять. Это очень важно для отладки. |
| Автор: drug007 19.8.2014, 10:04 | ||||
Контраргументы, по которым народ не перешел уже отпали по естественным причинам.
Вот как раз такие моменты я и хочу узнать, спасибо. Вот только я считал, что pthreads наоборот даст больше кода в результате. Отлаживать сетевой и многопоточный код я предпочитаю через printf, хотя gdb штука очень хорошая и полезная, безусловно. |
| Автор: borisbn 25.8.2014, 09:15 |
Неа. Вернее, совсем нет. Вот тут - http://stackoverflow.com/questions/7241993/is-it-smart-to-replace-boostthread-and-boostmutex-with-c11-equivalents - первый ответ (у всех м.б. отсортировано по-разному, поэтому см. ответ, начинающйся с "There are several differences between Boost.Thread and the C++11 standard thread library:") |
| Автор: NoviceF 26.8.2014, 08:33 |
Согласен, что они не идентичны, но т.к. стандартные потоки сделаны на основе Boost.Thread (по утвержденияю автора Boost.Thread), то сходства между ними всётаки довольно много |