HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 07.02.2016, 15:20
gattsu
Участник форума
Регистрация: 24.11.2015
Сообщений: 165
С нами: 5509192

Репутация: 1457
По умолчанию

Долго мучаюсь, но вот уже созреваю до конечной программной концепции, своей реализации модели акторов.

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

Модель акторов — Википедия

Для полного ознакомления, рекомендую почитать:

Цитата:
Нюансы моей реализации:

- в системе есть фиксированное количество потоков(worker).

- отсутствует блокирующая синхронизация

- синхронизация с помощью atomic(в класе EventBus)

- распределение вычислений делайте actorsystem(global

Пытаюсь сделать полностью однородную среду, реализовать по принципу "все есть актор". Сейчас переписываю в 100 раз. Пытаюсь замкнуть все контексте и производить обработку пулом, но при этом оставить однородность. Если будут вопросы пишите, пока не могу расписать, что да как, но думаю на конкретные вопросы смогу ответить. Думаю уже близко к концу, удовлетворяющему меня варианту.

actor-model / actors — Bitbucket

ПС пакет actor.test содержит пару примеров реализации.

Да, про другие реализации модели акторов, автор знает и пробовал на них делать программы.

Немного абстрактного кода для примера из ла2

Цитата:
Сообщение от Спойлер  


Код:


Код:
class Account extends BaseActor {
    public static final Logout logout = new Logout();
  
    static final LoginSuccess success = new LoginSuccess();
  
    final String login;
  
    String password;
  
    {
        behavior(State.FREE)
            .Case(
                auth -> {
                    if(password.equals(auth.password)) {
                        reply(success);
                        become(State.AUTH);
                    } else
                        reply(LoginFail.WRONG_PASSWORD);
                },
                Auth.class
            );
          
        behavior(State.AUTH)
            .Case(
                auth -> reply(LoginFail.IN_USE),
                Auth.class
            )
            .Case(
                logout -> become(State.FREE),
                Logout.class
            );
        ...
    }
  
    enum State {
        FREE,
        AUTH,
        BLOCK,
        ...
    }
  
  
    public static class Auth {
        final String password;
      
    }
  
    public static class LoginSuccess {
  
    }
  
    public static class Logout {
  
    }
  
    public static enum LoginFail {
        IN_USE,
        WRONG_PASSWORD,
        ....
    }
}
 
Ответить с цитированием
 



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.