|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.02.2015, 06:42 | #1 |
Регистрация: 16.02.2015
Сообщений: 3
|
Воксели шмоксели
Всем привет, решил попробовать свои силы в написании игрушки похожую на minecraft. Вроде как получилось генерировать меши чанков на основе шума перлина и загружать их в 2 потоке по ходу игры. Получилось что приложение вроде работает но не стабильно, вылетают исключения + фризы иногда, а иногда все гладко до самого завершения работы программы, конечно есть догадки из за чего это но конкретно что делать не знаю. Помогите пожалуйста исправить фатальные ошибки в проекте.
скрин для представления 5vsuo7o02857.jpg проект VoxelEngine 2.rar |
17.02.2015, 12:10 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
В детали не вникал, но что бросается в глаза:
1) Проверка на queue.empty не защиена мьютексом 2) В следствии пункта 1 при входе в сам цикл может оказаться, что в очереди реально ничего нет. Сей механизм жрет CPU на все 100% - прочитайте про семафоры, как раз то что нужно. Забудьте раз и навсегда функцию TerminateThread() пока не поздно |
17.02.2015, 16:06 | #3 | |
Регистрация: 16.02.2015
Сообщений: 3
|
Цитата:
В программе еще остался фриз( окно перестает реагировать на что либо даже крестик нажать нельзя ), с чем это может быть связанно? |
|
17.02.2015, 17:25 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Про TerminateThread почитайте здесь:
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx Окно зависает если никто не качает сообщения. Судя по коду, у вас это может произойти при нажатии на 1 - OnEvent будет работать до бесконечности, поскольку некому обработать сообщения и изменить статус клавишы. Воспользуйтесь GetAsyncKeyState или измените алгоритм OnEvent. Все сказанное на основе осмотра кода, если проблема останется, запустите под отладчиком да посмотрите где зависнет. |