Цитата Сообщение от trabla
thread это хорошо, и он там наверняка есть. Но доступ к данным сцены должен быть синхронизирован и тут хоть 100 threads запускай, всё равно только один данные сцены будет апдейтить и при этом thread рендерера не сможет их использовать до окончания апдейта. Я не говорю о приёме пакетов из сети, я говорил об их обработке.

Я не говорил о том что там что-то неправильно, а тем более никого не обвинял в том, что он чего-то незнает или не умеет . Просто, я описал предполагаемую причину фризов. Причём, я указал, что решение не может быть абсолютным и может являться только компромиссом.

Подчеркиваю, это предполагаемая причина, а там всё может быть и по другому
ну ты загнул, у тебя получается такая архитектура:
есть тред "расчета и отображения картинки на экране"
есть массив параметров игры
есть тред "обмена с сетью"
и при работе тред обмена с сетью начинает обновление массива параметров, при этом закрывая к нему доступ синхронизацией со стороны отображателя. и только когда он заканчивает обновление параметров синхронизация выключается и отображатель отрисовывает картинку.

Но так никто не делает, все нормальные игроделы применяют такую архитектуру:
есть тред "расчета и отображения картинки на экране"
есть локальный массив параметров в этом треде

есть тред "обмена с сетью"
есть локальный массив параметров в этом треде

тред работы с сетью записывает изменения параметров игры в свой локальный массив параметров, и потом происходит синхронизация массива сетевого треда и масива "отображателя", это процесс происходит для игрока мгновенно (копирование памяти операция быстрая и незаметная по сравнению с остальным). и нигде больше синхронизация не нужна.