Як відбувається одна окрема логіка гри та візуалізація? Я знаю, що, здається, тут вже виникають питання, які задають саме це, але відповіді мені не задовільні.
З того, що я розумію досі, сенс розділення їх на різні потоки полягає в тому, що логіка гри може почати працювати відразу ж для наступного галочки, а не чекати наступного vsync, де рендерінг нарешті повертається з виклику swapbuffer, що його блокується.
Але конкретно, які структури даних використовуються для запобігання перегонових умов між логічним потоком гри та потоком візуалізації. Імовірно, потоку візуалізації потрібен доступ до різних змінних, щоб зрозуміти, що малювати, але логіка гри могла б оновлювати ці самі змінні.
Чи існує фактично стандартна методика вирішення цієї проблеми. Можливо, як би скопіювати дані, потрібні потоком візуалізації після кожного виконання логіки гри. Яким би не було рішення, чи буде накладні витрати синхронізації чи не менше, ніж просто запускати все, що є одним потоком?