1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Параллельный или последовательный вызов ивентов?

Тема в разделе "Разработка плагинов для новичков", создана пользователем Firec, 2 май 2020.

Статус темы:
Закрыта.
  1. Автор темы
    Firec

    Firec Активный участник Пользователь

    Баллы:
    61
    Такой вопрос - как происходит вызов ивентов? В частности интересует InventoryClickEvent и onCommand (он вроде ивент, а вроде и нет чего-то вроде OnCommandEvent).

    Представим, что есть команда /test или предмет, при клики на которой происходит действие x. Это действие увеличивает int x на один и, в зависимости от x%2 отправит игроку или A или B. Только есть одно но - перед этим произойдёт ещё много различных действий, которые нас сейчас не интересуют, но известно, что какое-то время это займёт. Так вот - если сразу два человека отправят вызовут действие x, то будет создаваться некоторая очередь на выполнение команд или начнётся выполняться код для обоих команд?

    Если кому-то интересно зачем мне это всё. Предположим, что x = 0. И два игрока вызывают x с разницей в 10^(-3) секунды. Назовём их p1 и p2. И представим, что у p2 код между изменением x и отправкой A или B занимает меньше времени, чем у p1. В случае, если вызов происходит параллельно, то p2, который написал /test позже, получит A раньше, в то время, как p1 получит B соответственно позже. Если же вызов последовательный, то p1 получит своё законное A, а p2 своё B.
     
  2. Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    96
    Оба ивента синхронные, а команду напишет раньше тот, у кого меньше пинг.
     
  3. Автор темы
    Firec

    Firec Активный участник Пользователь

    Баллы:
    61
    Не совсем понял. В моём понимании (я пришёл из мира JS) синхронно = последовательно. Получается, что p1 получит A, а p2 - B. Так?
     
  4. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Вся обработка идет в один тик, каждые 50мс в листе или мапе. Так что это не имеет никакого значения для сервера.
     
  5. Автор темы
    Firec

    Firec Активный участник Пользователь

    Баллы:
    61
    Понял, спасибо!
     
Статус темы:
Закрыта.

Поделиться этой страницей