Як використовується модель актора?


18

Я трохи прочитав про модель актора, але насправді не розумію, як використовувати акторів у реальній ситуації - як моделювати проблему з ними.

Може хтось, будь ласка, пояснить? Простий приклад або посилання на приклади були б дуже вдячні.


Або ти маєш на увазі модель актора ?
back2dos

Я підозрюю, що ви маєте на увазі агентів, а не акторів. Якщо так, перегляньте цей запис у Вікіпедії: en.wikipedia.org/wiki/Software_agent
DwB

1
Вони грають у Зеленому ліхтарі та Планеті мавп для того, щоб розважати гіків у /. У свою чергу, вундики в /. розважайте решту нас.
Робота

Я маю на увазі модель актора і оновив свій пост, щоб уточнити.
Пнут

Відповіді:


21

Актори, в сенсі моделювання дій, з повідомленнями тощо, - це спосіб моделювання програмного забезпечення, що забезпечує пару корисних елементів ...

  1. Актори можуть жити на одній нитці, дозволяючи операціям, які не є безпечними для потоку / не є одночасними, без будь-якої магії блокування. Актор відповість на повідомлення у своїй папці "Вхідні". Коли ви хочете, щоб вона обробляла команду, ви надсилаєте їй повідомлення, і воно піклується про них у порядку їх отримання. Так само, як і звичайна черга. Нитка безпечна тут вбивця, і я використовую це в ряді проектів з відкритим кодом, над якими працюю.

  2. Наприклад, у деяких мовах, наприклад, Scala, легко перетворити код на основі актора в одному процесі в розподілену систему, розділивши дійових осіб і перетворивши канали, з якими вони спілкуються, у віддалені канали. Це змінюється між реалізаціями, наскільки це просто, але це надзвичайна особливість.

  3. Допомагає зосередитись на подіях на основі завдань, а не на подіях CRUD. CRUD простий, але це так само, як взаємодія з картотекою. Якщо ми можемо надати більше цінності, ніж це в програмному забезпеченні, яке ми виробляємо, чому ми це робимо? Прив’язання декількох дій до однієї команди "Оновити" в системі, що базується на завданнях, корисніше, ніж просто збереження в БД. Це також потрапляє в такі речі, як CQRS.


Дякую за корисну відповідь та посилання. Яку мову ви б рекомендували переглянути, щоб краще відчути акторів?
Пнут

1
Я думаю, це залежить від того, якими мовами вам подобається. Однак у Scala може бути найкраща документація навколо акторів, оскільки вони є мовною концепцією. Ерланг є дивовижним для обміну повідомленнями, хоча вся мова базується на цій концепції.
Тревіс

Я погляну на Скалу та Ерланг. Знайшов цей посібник для початківців для Ерланга, який розпочну з нього. Спасибі!
Пнут

+1: Дуже цікаво. Чи знаєте ви, чи є бібліотека C ++, яка реалізує віддалені актори? Я був би радий використовувати Scala, але мій проект знаходиться на C ++.
Джорджіо

1
Розгляньте це реалізація моделі C ++ Actor Model: act-framework.org
Chen OT

4

Відповідь Травіса тверда. Коли ви починаєте говорити про одночасність, ви намагаєтеся вирішити проблеми з ресурсами. Паралельність з нитками та замками досить легко зробити неправильно. Модель актора допомагає змусити запрограмувати одночасні частини коду як самодостатні самородки, які можна виконувати паралельно і без залежності від іншого фрагмента коду. Ви намагаєтеся уникати неприємностей, таких як умови перегонів та тупики.

У цій розмові дійові особи схожі на вас і я. Ви просто не можете зайти до мого мозку і вибрати, що я набираю. Ви передали мені повідомлення, яке сказало "Чому ми існуємо?" Я сів і розчавив деякі номери і надіслав відповідь «Я думаю, тому я є». Ви не могли сказати, що я роблю на власному шматочку планети Земля. Єдиний контакт, який ви маєте зі мною, - це повідомлення, які ми передаємо туди-сюди.

Редагувати:

Ви не сказали, якими мовами вам подобається, але подивіться, чи є у вашій мові реалізація актора. Можливо, найпростішим був би хтось із акторських лайків в пітоні. Але, мабуть, краще для навчання був би Ерланг. Мова трохи груба, але як тільки ви перейдете нюанси, це гарна мова.


Я не впевнений, чи редакція гната спрямована на мене, але моєю зброєю вибору зазвичай є Хаскелл. Ерланг, безумовно, гарна мова. Haskell традиційно покладався на CSP для конкурентоспроможності, але там є кілька реалізацій акторів.
M15K

-2

Дійові особи - це елемент діаграм використання, який представляє будь-яку зовнішню сутність (користувача, зовнішню систему тощо), яка може діяти в системі. Будь-який базовий випадок використання містить учасників - просто google "use case" для багатьох прикладів.


6
Хіба це не ті, хто називається фігурками ?
пігулка

1
Мені не було зрозуміло, і ти неправильно зрозумів. Я говорив про акторську модель.
Пнут
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.