Однією з переваг моделей обробки повідомлень, таких як актори та агенти, є те, що традиційні проблеми одночасності (насамперед синхронізація спільного стану) вже не є проблемою. Актор може зберігати приватну державу та вільно її оновлювати без замків. Рамка актора забезпечує, що за один раз обробляється лише одне повідомлення. При серіалізованій обробці код можна записати без замкненого способу.
У вашому прикладі, коли користувачі зберігають форму, припускаючи, що актор зберігає Перелік деяких даних з кожної форми, актор може оновити список без блокування, оскільки рамка гарантує, що одночасно буде оброблена лише одна форма. Традиційно вам доведеться замкнути доступ до списку або використовувати паралельний список.
Стратегія кон'юнктури - дещо інша справа, і все одно ви відповідаєте (при цьому жодна стратегія не є найбільш поширеною стратегією). Щоб трохи змінити ваш приклад, скажімо, що обидва користувачі намагаються одночасно оновити екземпляр форми SAME. Без стратегії одночасності зміни однієї замінять іншу (ймовірно, остання виграє). Це добре, але в кращому випадку це призводить до несподіваної поведінки для користувача, зміни якого були перезаписані. Якщо вони переглянуть форму, яку вони просто змінили, вона матиме несподівані значення (від іншого користувача). У гіршому випадку (коли ми говоримо не лише про оновлення форми, а про такі речі, як замовлення на доставку), це може призвести до різного роду втрат (часу, доходу тощо).
Використання стратегії паралельної валюти допомагає виявити ці випадки та мати можливість їх вирішити на основі правил бізнесу. Наприклад, Optimistic Concurrency має надіслати користувачем версію оновленої форми. Коли актор йде на обробку зміни, він помічає, що другий користувач думає, що вона оновлює версію 5, коли форма фактично є у версії 6 через оновлення першого користувача. Тепер принаймні ми можемо повідомити другого користувача про те, що форма вже змінилася з моменту її редагування. Або будь-які правила, які бізнес хоче там застосовувати.
Що стосується оновлення форми, то, ймовірно, не так сильно піклується про одночасність (я думаю, залежить). Але в інших випадках може бути дуже важливою справою принаймні мати можливість перевіряти та вирішувати порушення. Ви навіть можете ігнорувати порушення одночасності, наприклад, якщо користувачі змінили різні розділи (щоб продовжити аналогію форми). Або якщо зміна має великий вплив на бізнес (велике замовлення), ви хочете прийняти його та вирішити незначні конфлікти пізніше (наприклад, щорічне оновлення контактної інформації не завершено).
Я вважаю, що Акка має ряд інших аспектів, таких як, як вона справляється з невдачами, наглядачами тощо.