Модель акторов — модель параллельных вычислений, в которой актор рассматривается как основной строительный блок.
Для модели акторов присуще следующее:
В Эрланге модель акторов поддерживается “из коробки”, максимально просто и удобно. Спаунить акторов максимально просто. В сообщениях от актора к актору можно наравне с другими термами передавать пиды. Состояние актора удобно хранить в виде ETS/DETS-таблицы. В случае с DETS несколько акторов могут получить к ней доступ. Это ещё один способ обмениваться информацией.
Изначально Эрланг разрабатывался под влиянием модели CSP Тони Хоара, а не модели акторов. В официальной документации по Эрлангу слово “актор” не употребляется. Используется “процесс”. Но, чтобы не путать процессы внутри виртуальной машины и процессы операционки, многие используют термин “актор”. Что касается модели CSP, в ней не сразу, но тоже был заложен принцип неограниченного недетерминизма, присущий модели акторов.
Модель акторов позволяет реализовывать параллельные вычисления в одном ключе. Во многих других языках программирования этому служат async/await плюс использование потоков. Первое используется для быстротечных операций вроде считывания данных из файла, а второе (значительно более тяжеловесное) — для более длинных задач (чтобы использовать возможности многоядерного процессора).
В Эрланге всё конкурентное осуществляется типично: спаунится актор, получаем его пид, посылаем актору сообщения, от него ждём сообщений, актор может моментально выполниться, а может работать часами и годами. В Эрланге актор это внутренний процесс виртуальной машины, а не системный, поэтому он очень лёгкий, и на современном компьютере можно запустить конкурентно миллионы акторов.
Автор модели акторов — Карл Хьюитт (1944 — 2022).
Copyright © 2024-2025 Алексей Карманов