Другие языки программирования и технологии

Часто ли пользуетесь многопоточностью при разработке своих приложений? Какие плюсы и минусы видите в ней ?

Что такое по сути нить - это кусок кода, выполняющийся в цикле, который умеет "замирать" и "отмирать" по команде, как в детской игре. Плюс некоторые свои данные.

Это получается такой живой объект, который можно использовать с нескольких экземплярах. Когда таких несколько, для них нужен специальный объект-координатор (ещё одна нить).

Нужна вам такая абстракция в вашей программе - используйте её. Если грамотно разделить общие зоны, то программа будет похожа на коммунальную квартиру с общими холодильником, ванной, туалетом.

Основные сложности - ваш творческий подход придётся ДОКУМЕНТИРОВАТЬ. Иногда по времени это больше, чем само кодирование.

Отдельный вопрос - тестирование и отладка многопоточных приложений, например в холодильнике может внезапно обнаружиться соседский кот. Понятно, что программа при этом упала, так как об этом вам написали в баг-репорте, но вопрос появления несогласованностей в разделяемых данных, к которым имеют общий доступ десятки нитей, интересный. И, что характерно, ситуация трудно повторима. На практике координатору просто выдаётся задание обнаруживать "кота" заранее и устранять его, перезапуская всех и протоколируя ситуацию, после получения протокола и начинается работа над ошибками…

ЗЫ
Есть ещё алгоритмы и библиотеки, которые по сути своей многопоточны. Этот вариант я не рассматривал, ибо выбора у нас нет…
Wladimir Kwashin
Wladimir Kwashin
11 112
Лучший ответ
Пользуюсь когда надо. Нынче это необходимо по той причине, что мир ушёл в мультипроцессорность, и не использовать её в наше время это значит не соответствовать времени.
Nikolay Kolesnichenko
Nikolay Kolesnichenko
81 887
в гуях без неё ну вообще никак: никто не будет пользоваться приложением, которое намертво подвисает при выполнении какой-нибудь затратной задачи
АБ
Алла Бутто
50 628
ИМХО больше 2-3 потоков нет смысла создавать. А для рассчётов давно уже есть OpenCL. Процессоры достигли своего пика. 16 ядер/потоков надолго станет стандартом на десктопах. И, вроде как, даже есть математическое обоснование этого.
B*
Bek@ *_*
26 548