@Alex00qqw

Почему в функциональное программирование считается потокобезопасным?

Вопрос, почему ФП считается потокобезопасным? А если в памяти приложения нужно хранить общую информацию например очередь сообщений или что-то подобное. Какой подход используется в ФП для этого?
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
uvelichitel
@uvelichitel
habrahabr.ru/users/uvelichitel
ФП программа не хранит состояние/state, кототое бы могли конкурентно изменять потоки. А в чистом ФП и именования должны быть неизменными/immutable. То есть в чистом ФП конструкция
something = 2
something = 3
нелегальна, противоестественна. Если something = 2, то это навсегда и не может вдруг стать =3. При таком подходе потоки не могут получить одновременный доступ к одному месту в памяти пытаясь изменить переменную состояния. Для обмена данными между потоками можно только использовать специальные примитивы защищеннные под капотом механизмами синхронизации операционной системы(вроде Mutex или Atomic). Например очередь сообщений может быть представлена списком/list которым нельзя манипулировать напрямую, а только методами Queue.Put() Queue.Get(). И в реализации этих методов уже зашиты блокировки от параллельного доступа к памяти.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы