Livelock - аналог deadlock, только система не блокируется, а занимается бесполезной работатой и ее состояние постоянно меняется, но тем не менее она зациклилась.
https://deadlockempire.github.io/
Клевый онлайн тренажер для понимания сути проблем синхронизации потоков.
Зарядка для ума и прокачка твоего технического скила!
Клевый онлайн тренажер для понимания сути проблем синхронизации потоков.
Зарядка для ума и прокачка твоего технического скила!
deadlockempire.github.io
The Deadlock Empire
Slay dragons, learn
concurrency! Play the cunning Scheduler, exploit flawed
programs and defeat the armies of the Parallel Wizard.
concurrency! Play the cunning Scheduler, exploit flawed
programs and defeat the armies of the Parallel Wizard.
Еще одна интересная проблема связанная с синхронизацией потоков.
Есть два потока - с высоким приоритетом High и низким приоритетом Low. Им обоим нужен экслюзивный доступ к некому распределенному ресурсу Res. Если поток Low захватит ресурс Res раньше, чем High, то возникает ситуация называемая Priority Inversion - т.е. более приоритая задача ожидает менее приоритетную.
Это проблема не приводит к бескончным циклам и зависанием, но может привести к значительному снижению производительности и к ложным срабатываниям мониторинговых систем.
Есть два потока - с высоким приоритетом High и низким приоритетом Low. Им обоим нужен экслюзивный доступ к некому распределенному ресурсу Res. Если поток Low захватит ресурс Res раньше, чем High, то возникает ситуация называемая Priority Inversion - т.е. более приоритая задача ожидает менее приоритетную.
Это проблема не приводит к бескончным циклам и зависанием, но может привести к значительному снижению производительности и к ложным срабатываниям мониторинговых систем.
Wikipedia
Priority inversion
undesirable computing scheduling scenario
Forwarded from Книги для программистов
Maykl_A_Di_Spetsio_-_Prevoskhodnye_Golovolomki.pdf
26 MB
Превосходные головоломки, развивающие критическое мышление
Майкл А. Ди Специо.
В этой книге 83 задачи известного американского мастера головоломок, развивающие способность логически мыслить, правильно воспринимать и анализировать реальные факты и события, уверенно ориентироваться в огромном количестве информации. Необычные ситуации и юмор делают решение этих задач особенно интересным.
#book
Майкл А. Ди Специо.
В этой книге 83 задачи известного американского мастера головоломок, развивающие способность логически мыслить, правильно воспринимать и анализировать реальные факты и события, уверенно ориентироваться в огромном количестве информации. Необычные ситуации и юмор делают решение этих задач особенно интересным.
#book
Forwarded from Книги для программистов
[Gleizer_D.,_Madhav_S.]_Mnogopolzovatelskie_igrue.pdf
6.9 MB
Многопользовательские игры. Разработка сетевых приложений
Глейзер Д., Мадхав С.
Сетевые многопользовательские игры - это многомиллиардный бизнес, привлекающий десятки миллионов игроков. Эта книга на реальных примерах рассказывает об особенностях разработки таких игр и основах построения надежной многопользовательской архитектуры.
Вы узнаете об основах сетевого программирования с точки зрения разработчиков игр, управлении игрой через передачу данных, сетевых обновлениях, обеспечении надежной работы и научитесь создавать безопасный и масштабируемый код. Не останутся без внимания игровые сервисы и облачные технологии.
Эта книга пригодится всем кто хочет узнать, как создаются сетевые игры.
#book #gamedev
Глейзер Д., Мадхав С.
Сетевые многопользовательские игры - это многомиллиардный бизнес, привлекающий десятки миллионов игроков. Эта книга на реальных примерах рассказывает об особенностях разработки таких игр и основах построения надежной многопользовательской архитектуры.
Вы узнаете об основах сетевого программирования с точки зрения разработчиков игр, управлении игрой через передачу данных, сетевых обновлениях, обеспечении надежной работы и научитесь создавать безопасный и масштабируемый код. Не останутся без внимания игровые сервисы и облачные технологии.
Эта книга пригодится всем кто хочет узнать, как создаются сетевые игры.
#book #gamedev
Вести свой блог, конечно, тяжело. На это нужно много времени.
Но я все равно постараюсь выкладывать интересные вещи, которые будут полезны. Сегодня это понятие Bus Factor - мера сосредоточения информации среди отдельных членов проекта; фактор означает количество участников проекта, после потери которых (в оригинале — «попадания» которых под автобус или грузовик, варианты: увольнения, заболевания, рождения ребёнка, несчастного случая и других форс-мажорных обстоятельств) проект не сможет быть завершён оставшимися участниками.
Но я все равно постараюсь выкладывать интересные вещи, которые будут полезны. Сегодня это понятие Bus Factor - мера сосредоточения информации среди отдельных членов проекта; фактор означает количество участников проекта, после потери которых (в оригинале — «попадания» которых под автобус или грузовик, варианты: увольнения, заболевания, рождения ребёнка, несчастного случая и других форс-мажорных обстоятельств) проект не сможет быть завершён оставшимися участниками.
Wikipedia
Bus factor
measurement of the risk of losing key experts on a team
https://stackoverflow.com/questions/8911440/c-sharp-float-expression-strange-behavior-when-casting-the-result-float-to-int
Сегодня в очередной раз столкнулся с проблемой в математике с плавающей точкой, но в этот раз в C#.
По приведенной ссылке все, в принципе, хорошо описывается, но удивлению моему не было приделу, так как поведение отличное от C++.
А именно:
Почему так?
Тип выражения time/bonus - это float. Так нам говорит стандарт C#. Да и (time/bonus).GetType() пишет System.Single.
Приведение к инту отбрасывает значимую часть. Вo float значение выглядит как 500.0000002, отбрасываем - получаем 500.
НО компилятор волен (т.е. зависит от реализации, а точнее от платформы) промежуточные значения оставлять с более высокой точностью, т.е. в первом случае double. 500 в double 499.99999998 (или как-то так). Отбрасываем, получаем 499 :)
В общем, в очередной раз убеждаюсь, что нет платформонезависимых языков.
Сегодня в очередной раз столкнулся с проблемой в математике с плавающей точкой, но в этот раз в C#.
По приведенной ссылке все, в принципе, хорошо описывается, но удивлению моему не было приделу, так как поведение отличное от C++.
А именно:
int time = 550;Ожидается, что value1 и value2 должны быть равны, но нет :) value1 - 499 и value2 - 500
float bonus = 1.1f;
var value1 = (int)(time/ bonus);
var floatValue = time/ bonus;
var value2 = (int)(time/bonus);
Почему так?
Тип выражения time/bonus - это float. Так нам говорит стандарт C#. Да и (time/bonus).GetType() пишет System.Single.
Приведение к инту отбрасывает значимую часть. Вo float значение выглядит как 500.0000002, отбрасываем - получаем 500.
НО компилятор волен (т.е. зависит от реализации, а точнее от платформы) промежуточные значения оставлять с более высокой точностью, т.е. в первом случае double. 500 в double 499.99999998 (или как-то так). Отбрасываем, получаем 499 :)
В общем, в очередной раз убеждаюсь, что нет платформонезависимых языков.
Stack Overflow
C# Float expression: strange behavior when casting the result float to int
I have the following simple code :
int speed1 = (int)(6.2f * 10);
float tmp = 6.2f * 10;
int speed2 = (int)tmp;
speed1 and speed2 should have the same value, but in fact, I have :
speed1 = 61
s...
int speed1 = (int)(6.2f * 10);
float tmp = 6.2f * 10;
int speed2 = (int)tmp;
speed1 and speed2 should have the same value, but in fact, I have :
speed1 = 61
s...
https://www.facebook.com/aslanbeily/posts/2547154415327407
Очень интересный прецедент в IT-сфере. Это начало?
Очень интересный прецедент в IT-сфере. Это начало?
https://habr.com/ru/company/pvs-studio/blog/465575/
В новом стандарте появится новый оператор упорядочивания, который может избежать кучи проблем в реализации операторов сравнения. Одно из очень полезных нововведений.
В новом стандарте появится новый оператор упорядочивания, который может избежать кучи проблем в реализации операторов сравнения. Одно из очень полезных нововведений.
Хабр
Операции сравнения в C++20
Встреча в Кёльне прошла, стандарт C++20 приведён к более или менее законченному виду (по крайней мере до появления особых примечаний), и я хотел бы рассказать об...
https://zifter.github.io/programming/gamedev/2019/09/03/particle-bug.html
Статья о давно исправленном баге, но от этого не менее интересном
Статья о давно исправленном баге, но от этого не менее интересном
zifter.github.io
Как не стоит генерировать частицы
Forwarded from DevBrain
В сети появился документ с набором правил и подходов, которые практикуются в компании Google по code review: https://google.github.io/eng-practices/review/reviewer/
А вы практикуете code review в своей команде? Комментарий можно оставить к этому посту, нажав на кнопку Add a comment
А вы практикуете code review в своей команде? Комментарий можно оставить к этому посту, нажав на кнопку Add a comment
eng-practices
How to do a code review
Google’s Engineering Practices documentation
Forwarded from DevBrain
Вот и состоялся релиз python 3.8. Отличный релиз с большим набором интересных фич.
Кому любопытно узнать что там нового - почитайте мой июльский пост: https://khashtamov.com/ru/python38-overview/
Скачать релиз https://www.python.org/downloads/release/python-380/
Кому любопытно узнать что там нового - почитайте мой июльский пост: https://khashtamov.com/ru/python38-overview/
Скачать релиз https://www.python.org/downloads/release/python-380/
Khashtamov
Обзор Python 3.8
Релиз Python 3.8 намечен на октябрь 2019 года, но уже сейчас у каждого есть возможность пощупать набор новых фишек языка. Пока пишу этот пост, на официальном сайте доступна версия python 3.8b2.Итак…
https://www.levels.fyi/salary/Google/
А вот тут можно узнать о зарплатах в Google.
А вот тут можно узнать о зарплатах в Google.