LINUX.ORG.RU

man 3p time

anonymous
()

Для игры или нет?
У меня в «игре» сделано так: запоминаем ntreott время, обрабатываем все события (мышь, клавиатура, тач, что-то еще), обрабатываем внутренний тик (tick), отрисовываемся.

После этого опять беру текущее время, сравниваю, сколько секунд было потрачено на всё, вычисляю, сколько времени мне необходимо поспать,

usleep(elapsedTime)
Если времени потрачено больше, чем запланированно - алярм.

trex6 ★★★★★
()
Последнее исправление: trex6 (всего исправлений: 1)
Ответ на: комментарий от trex6

А готовой реализации нету значит, понятненько.
Тогда еще один вопрос. Нормально будет дергать при каждой перерисовке mutex? Или есть побыстрее способы блокировки потоков?

deterok ★★★★★
() автор топика
Ответ на: комментарий от deterok

У меня с mutex'ами проблем не возникало.
А вы осилили использование OpenGL из разных потоков?
Не поделитесь манами?

P.S. Если надо, могу вечером мою реализацию скинуть на pasterbin.

trex6 ★★★★★
()
Последнее исправление: trex6 (всего исправлений: 1)
Ответ на: комментарий от trex6

Вообще, как я понял, один поток - один контекст.
Я делаю так: В один поток передается графическая петля и как параметр ссылка на vector объектов с функцией render. Из другого потока изменяю поля объектов, обрабатываю события и т.д. Петля в это время отрисовывает их.
Вот думаю, произойдет ли что плохое если один поток будет изменять поле объекта, а другой будет его считывать? Нужен ли mutex для массива объектов?

deterok ★★★★★
() автор топика
Ответ на: комментарий от deterok

Вполне может произойти, если изменения объектов не атомарны, а во время изменения объект может находиться в неконсистентном состоянии.

trex6 ★★★★★
()
Ответ на: комментарий от deterok

Вообще, как я понял, один поток - один контекст.

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

P.S. Если это важно - я использую ES2.0

trex6 ★★★★★
()

vsync, отрисовка по событию, sleep на нужное время. От задачи зависит.

andreyu ★★★★★
()
Ответ на: комментарий от deterok

один поток - один контекст

неверно. контекстов в одном потоке может быть много, это вполне корректная ситуация

нельзя разделять один контекст между потоками

jtootf ★★★★★
()
Ответ на: комментарий от jtootf

нельзя разделять один контекст между потоками

Вы в этом на 100% уверены? Было бы полезно привести ссылку на конкретную страницу конкретной версии стандарта.

UPD: Сейчас посмотрел спеку, там вроде бы рекомендуют исопльзовать shared objects для работы с объектами из разных контекстов. Но у меня есть стойкое ощущение, что где-то я видел пляски с переключением контекста в рамках одного потока. Или показалось?

trex6 ★★★★★
()
Последнее исправление: trex6 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.