Я працюю з аккою вже 7-8 місяців щодня. Коли я починав, я працював над додатками і зауважував би, що актори використовуються в основному де-небудь всередині акторської системи для спілкування між більшістю об'єктів. Так що я зробив те саме - закрутив іншого актора на х / у / з.
Мені здається, що це може бути занадто безрозбірливим, додаючи складності там, де це не потрібно - але я не можу знайти жодних дискусій щодо того, де слід використовувати акторів проти простої синхронної або навіть асинхронної логіки через ф'ючерси. Я почав обмірковувати свою позицію після того, як мій колега згадав щось подібне. Нещодавно я зрозумів декілька випадків, коли я розмірковував над завданням, а потім ухилявся від створення іншого актора, тому що міг би досягти такого ж результату безпечно в незмінному виконанні - наприклад, щось на зразок отримання значень конфігурації з db або файлів десь, куди ви звертаєтесь дуже рідко і будете чекати результату - це фактичний випадок використання.
Зокрема, мені здається, що будь-який випадок, коли ви граєте з незмінним станом, актори створюють складність і обмежують пропускну здатність - чисту функцію в об'єкті, наприклад, можна викликати одночасно без ризику з будь-яким рівнем одночасності, але актор може обробляти лише одне повідомлення за один раз. Альтернативне розгляд полягає в тому, що ви будете паркувати нитку, якщо вам потрібно дочекатися результату, якщо ви не почнете використовувати ф'ючерси, але випадки, коли вам не потрібно турбуватися про повідомлення про асинхронізацію чи масштаб, здається, що може бути зайвим зайняти актора.
Тож моє запитання - чи поганий час використовувати акторів? Мені цікаво, як виглядає Ерланг і дуже хотілося б зрозуміти інших людей. Або якщо існують якісь принципи використання акторів.
ask
артистом і просто використанням простого Future
.