|
Модераторы: Daevaorn |
|
cppGhost |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 101 Регистрация: 24.4.2013 Репутация: нет Всего: нет |
День добрый. Решив серьезно заняться пробелами в многопоточном программировании, столкнулся с такой проблемой: а в какую сторону именно смотреть.
1) есть новый стандарт. однако приду я на собеседование, а мне там скажут "ну у нас проект не новый и когда мы перейдем на c++11 неизвестно) 2) есть boost asio. тут тоже вещь не самая распространенная. (хотя насколько я понимаю c++11 вышел именно оттуда, но с какими то изменениями) 3) есть библиотеки, позволяющие все это реализовывать. сюда отношу win32 функции и прочее можно сказать, что принцип везде один и тот же, что переход с одного на другое дело несложное (хотя уже вижу, много нюансов между c++11 и тем же win32). хочется выбрать наиболее всеобъемлющий вариант. Что посоветуете? |
|||
|
||||
baldina |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
сам же сказал
boost asio это не многопоточность. она там используется как инструмент, но тема то другая. лучше наверно с++11: стандартно, кроссплатформенно, содержит все необходимые фичи и понятия. еще есть тема распределенных вычислений - тут надо конкретные технологии изучать, OpenMP например |
|||
|
||||
vinter |
|
|||
Explorer Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
Boost.Asio это I\O, т.е. многопоточность не реализуется этой библиотекой, а только используется. Лучше всего смотреть на C++11 и Boost.Thread. Они наиболее универсальны. Но универсальность накладывает и ограничения. Есть неплохая книга по многопоточности в C++. Если мне не изменяет память, то она и на русском выходила.
|
|||
|
||||
baldina |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
||||
|
||||
cppGhost |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 101 Регистрация: 24.4.2013 Репутация: нет Всего: нет |
Спасибо. Именно ее и продолжаю читать. Буду надеяться, что стандарт есть стандарт и скоро все равно на него перейдет большинство
|
|||
|
||||
azesmcar |
|
|||
uploading... Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
Wuffur |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 22.7.2007 Репутация: нет Всего: нет |
Помимо уже упомянутого здесь OpenMP, есть ещё достаточно большое количество других технологий. Boinc - peer2peer вычисления на свободной архивы(смотрите проекты folding@home, rosetta@home),
есть CUDA, которая уже ближе к Си++, чем к обычному Си (использование ядер, то есть блочно-нитевая структура выглядит один к одному как шаблоны в Си++ <<<blocks, threads>>>SomeFunction(parameter1, parameter2) - обычно внутри скобок передаются массивы). Для серьёзных вычислений существует ещё MPI - у него есть различные реализации OpenMPI(У меня какие-то траблы с ним ), MPICH2(норм - Linux, Windows, MacOS), MVIAPICH(работает на высокоскоростной сети Infiniband - половина суперкомпьютеров top-500 и нашего топ-100 наверное 70 штук, ну Т-Платформы жеж! и наверное РСК их продвигает, хотя они что-то с охлаждением любят заморачиваться ИМХО). Это для распределённых вычислений по сети, а для одной машины, то есть с одним физическим пространством памяти, подходят как уже сказалиOpenMP, OpenACC(если у вас есть видеокарта NVidia) - это разработка Portland Group, которую купила Nvidia(смотрите CUDA альманах http://www.nvidia.ru/object/cuda-parallel-...lmanac-ru.html). Есть ещё deprecated, то есть устаревший(последний коммит в код в 2009) PVM. Ну, если хотите выберете что по душе или лучше по задаче. Параллелизм внутри ОС поддерживает планировщик - как известно есть realtime(реального времени) ОС(QNX к примеру, или крайне неудачная WindowsRT, планшеты с которой пришлось все в США отдать школьникам) и multitasking(многозадачные) ОС(Windows, как известно он перестаёт быть многозадачным, если поставить дискету в флопик или CD или USB флешку!!! и начинает тупо подвисать, Linux и MacOS(обе POSIX) и всякие research OS - Inferno, PlanB, FiascoOC(хотя последняя притендует на решение реальных задач), и даже в том же MicroSoft, была ОС не помню как её зовут, вспомню вставлю, у них есть подразделение MS Research, в недрах которого обкатывалась .Net, чтобы избавится от морально устаревших COM объектов. Ну ещё есть модели параллельности или последовательной загрузки внутри планировщика ОС - семафоры, мьютексы, потоки, нити, сообщения, каналы именованные/неименованые - см. книжки Таненбаума - классику или попроще Андрея Робачевского. |
|||
|
||||
VSB |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 113 Регистрация: 23.8.2007 Репутация: 1 Всего: 2 |
||||
|
||||
akizelokro |
|
|||
Крокодил Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Нормальные наниматели напишут, какой специалист им нужен. И boost::asio напишут. Что ожидать от ненормальных нанимателей, - см. тему об собеседованиях.
Добавлено через 6 минут и 7 секунд В смысле нормальные наниматели не обязаны писать обязательно boost::asio(?, это дело менегеров проекта, какой они инструментарий выберут). Есть другие типы вакансий с малозначительной портянкой в один обзац (но там наниматели сами походу не знают, какой специалист им нужен.. на заметку!). Вопросы о будущем языка и библиотеки boost:: оставлю для любителей поговорить. Добавлено через 6 минут и 32 секунды Книги зашибись, но лучше бы и опыт работ -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |