С KISS тоже самое. Некоторые люди начинают изучение с него и на нем же осстанавливаются. В итоге добавить хоть куда нибудь слой или хоть как то поуправлять зависимостями напарывается на агрессию.
В каждом новом проекте приходится вычищать такие вот кеши, которые увеличивают сложность и ухудшают читаемость ради преждевременной оптимизации. А варианты с отдельным классом под кеши это еще и дополнительная связанность, даже в самой юньке наконец то догадались об этом и все кеши сделали обсолет.
Компонент медиатр это мега ошибка в коп, и каждый человек пытается создать свой класс для удобного доступа. В новой юнити наконец то все такие ссылки пометили как обсолет.
У нас все события были через типы, Тип это уникальный статический идентификатор, в нем нет проблем енамов (разные идентификаторы в одном месте), чисел и гуидов. Выглядело как то так:
// где то
public struct StartEvent { }
// событие приемник
[EventListener(typeof(StartEvent))]
public void OnStart()
{
}
// генерация события
Dispather.SendEvent(typeof(StartEvent));
// или
Dispather.SendEvent\<StartEvent\>();
Прочитал. Пока писал ответ нашел Ваш же комментарий где флаг обернут в lock, вот собственно такой вариант решает проблему которую я описал.
Мы может после флага изменить еще что нибудь и в обработчике это что нибудь будет изменено а флаг нет. А lock ставит барьеры и такого не произойдет. С уважением.
Вы отписываетесь от события а потом ставите флаг. Может быть ситуация, когда Вы отписались от события, но флаг еще равен false. Компилятор и процессор не в курсе что переменная делегата и вашего флага зависимые между потоками.
Компилятор и процессор могут менять порядок выполнения в целях оптимизации, может кешировать в локальном треде. Получается Ваш пример тоже не тред сейв. С Уважением.
Мне кажется что все идут не в ту сторону. Я хочу чтобы изображение было такое, которое мне достаточно не только по скорости соединения но и по устройству вывода. Я хочу чтобы оно подгружалось и не мешало чтению. Я не хочу чтобы подгружались те, которых я никогда не увижу.
MS позиционирует студию и как для разработки игр, и там уже есть вьювер текстур и мешей из коробки. Так что не удивительно ни разу. Это не только маркетинг но и холодный расчет.
Я не очень силен в электротехнике, но в таком варианте, сопротивление возрастает как минимум в 2 раза, у провода увеличивается индуктивность и излучение.
Теперь у вас есть возможность написать третью статью — как же все таки нужно писать mmo, что такое авторитарный сервер, зачем нужен придикшен и лагокомпенсации, как динамически разбивать пространство мира не привязывая его физическому железу и самое главное, как с помощью дизайна упростить техническую реализацию проекта.
С KISS тоже самое. Некоторые люди начинают изучение с него и на нем же осстанавливаются. В итоге добавить хоть куда нибудь слой или хоть как то поуправлять зависимостями напарывается на агрессию.
// где то
public struct StartEvent { }
// событие приемник
[EventListener(typeof(StartEvent))]
public void OnStart()
{
}
// генерация события
Dispather.SendEvent(typeof(StartEvent));
// или
Dispather.SendEvent\<StartEvent\>();
Мы может после флага изменить еще что нибудь и в обработчике это что нибудь будет изменено а флаг нет. А lock ставит барьеры и такого не произойдет. С уважением.
Компилятор и процессор могут менять порядок выполнения в целях оптимизации, может кешировать в локальном треде. Получается Ваш пример тоже не тред сейв. С Уважением.
void foo()
{
a = true;
b = true;
}
void foo2()
{
if (b)
{
// тут a может быть false
}
}
Вы же сами сказали что его нет в документации.