All streams
Search
Write a publication
Pull to refresh
59
0.6
Альберт @mynameco

Пользователь

Send message
Не ждет ли атрибуты [[likely]] и [[unlikely]] участь ключевого слова «register»?

С KISS тоже самое. Некоторые люди начинают изучение с него и на нем же осстанавливаются. В итоге добавить хоть куда нибудь слой или хоть как то поуправлять зависимостями напарывается на агрессию.

В каждом новом проекте приходится вычищать такие вот кеши, которые увеличивают сложность и ухудшают читаемость ради преждевременной оптимизации. А варианты с отдельным классом под кеши это еще и дополнительная связанность, даже в самой юньке наконец то догадались об этом и все кеши сделали обсолет.
Компонент медиатр это мега ошибка в коп, и каждый человек пытается создать свой класс для удобного доступа. В новой юнити наконец то все такие ссылки пометили как обсолет.
У нас все события были через типы, Тип это уникальный статический идентификатор, в нем нет проблем енамов (разные идентификаторы в одном месте), чисел и гуидов. Выглядело как то так:

// где то
public struct StartEvent { }

// событие приемник
[EventListener(typeof(StartEvent))]
public void OnStart()
{
}

// генерация события
Dispather.SendEvent(typeof(StartEvent));
// или
Dispather.SendEvent\<StartEvent\>();
Прочитал. Пока писал ответ нашел Ваш же комментарий где флаг обернут в lock, вот собственно такой вариант решает проблему которую я описал.

Мы может после флага изменить еще что нибудь и в обработчике это что нибудь будет изменено а флаг нет. А lock ставит барьеры и такого не произойдет. С уважением.

Вы отписываетесь от события а потом ставите флаг. Может быть ситуация, когда Вы отписались от события, но флаг еще равен false. Компилятор и процессор не в курсе что переменная делегата и вашего флага зависимые между потоками.
Компилятор и процессор могут менять порядок выполнения в целях оптимизации, может кешировать в локальном треде. Получается Ваш пример тоже не тред сейв. С Уважением.
В современных процессорах порядок изменения и чтения переменных не определен:

void foo()
{
a = true;
b = true;
}

void foo2()
{
if (b)
{
// тут a может быть false
}
}
Я не собираюсь это использовать. Статья называется «интересные моменты» а не «правильное использование». С Уважением.
Вообще, про такие вещи лучше все-таки читать в спецификации, а не пытаться реверс-инжинирить их на кусках кода.

Вы же сами сказали что его нет в документации.
Будет исключение времени выполнения.
Думаю в конкретном случае можно было бы пометить эти переменные ThreadStatic атрибутом.
Там нет «попугаев» так что перевод не до конца корректный.
Мне кажется что все идут не в ту сторону. Я хочу чтобы изображение было такое, которое мне достаточно не только по скорости соединения но и по устройству вывода. Я хочу чтобы оно подгружалось и не мешало чтению. Я не хочу чтобы подгружались те, которых я никогда не увижу.
MS позиционирует студию и как для разработки игр, и там уже есть вьювер текстур и мешей из коробки. Так что не удивительно ни разу. Это не только маркетинг но и холодный расчет.
Я не очень силен в электротехнике, но в таком варианте, сопротивление возрастает как минимум в 2 раза, у провода увеличивается индуктивность и излучение.
Ну это же художественное представление. Тут еще судя по размерам галактика далеко а звезда близко, значит угол к нам вообще больше 45 градусов.
У вас в предложении «бац-бац — и в продакшен» две ошибки.
Теперь у вас есть возможность написать третью статью — как же все таки нужно писать mmo, что такое авторитарный сервер, зачем нужен придикшен и лагокомпенсации, как динамически разбивать пространство мира не привязывая его физическому железу и самое главное, как с помощью дизайна упростить техническую реализацию проекта.

Information

Rating
1,940-th
Date of birth
Registered
Activity