Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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. Просто вдруг есть контаргументы - вот решил спросить на всякий случай.

Автор: NoviceF 19.8.2014, 08:39
Цитата(drug007 @  18.8.2014,  18:15 Найти цитируемый пост)
Просто вдруг есть контаргументы - вот решил спросить на всякий случай. 

Думаю, раз "народ" до сих пор не перешёл самостоятельно, какие-то контраргументы имеются у него smile.  У нас, например, целевая платформа просто не поддерживает (официально) gcc старше 4.3, вот и весь аргумент smile

Автор: tzirechnoy 19.8.2014, 09:36
Контраргумент: код, реализующий pthreads -- гораздо меньшэ, написан в меньшэм количестве мест, сравнительно легко смотрится при помощи gdb и не использует всякой плюсовой магии по оборачиванию шаблонов и параметризацыи функцый в периоде компиляцыи.
Его работу проще понять. Это очень важно для отладки.

Автор: drug007 19.8.2014, 10:04
Цитата(NoviceF @  19.8.2014,  08:39 Найти цитируемый пост)
Думаю, раз "народ" до сих пор не перешёл самостоятельно, какие-то контраргументы имеются у него smile.  У нас, например, целевая платформа просто не поддерживает (официально) gcc старше 4.3, вот и весь аргумент

Контраргументы, по которым народ не перешел уже отпали по естественным причинам. 

Цитата(tzirechnoy @  19.8.2014,  09:36 Найти цитируемый пост)
Контраргумент: код, реализующий pthreads -- гораздо меньшэ, написан в меньшэм количестве мест, сравнительно легко смотрится при помощи gdb и не использует всякой плюсовой магии по оборачиванию шаблонов и параметризацыи функцый в периоде компиляцыи.
Его работу проще понять. Это очень важно для отладки. 

Вот как раз такие моменты я и хочу узнать, спасибо. Вот только я считал, что pthreads наоборот даст больше кода в результате. Отлаживать сетевой и многопоточный код я предпочитаю через printf, хотя gdb штука очень хорошая и полезная, безусловно. 

Автор: borisbn 25.8.2014, 09:15
Цитата(NoviceF @  18.8.2014,  15:30 Найти цитируемый пост)
 потоковая часть c++11 по сути и есть Boost.Thread

Неа. Вернее, совсем нет. Вот тут - 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
Цитата(borisbn @  25.8.2014,  10:15 Найти цитируемый пост)
Неа. Вернее, совсем нет.

Согласен, что они не идентичны, но т.к. стандартные потоки сделаны на основе Boost.Thread (по утвержденияю автора Boost.Thread), то сходства между ними всётаки довольно много smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)