Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Фриз приложения, Фриз приложения 
:(
    Опции темы
Lorise
Дата 18.2.2015, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 18.2.2015

Репутация: нет
Всего: нет



Всем привет, решил вот попробовать свои силы в программировании и написать что то похожее на такую замечательную игрушку как minecraft. В программе используется DerictX но вопрос именно по с++ поэтому эту тему размещаю в этом разделе. Возникла некоторая ошибка предположительно с ассоциативным  контейнером map название переменной - m_chunks в классе cChunkManager. В ходе выполнения произвольно( иногда все хорошо на продолжительном времени до самого завершения ) программа ловит фриз. В каком месте у меня косяк не предположу, поэтому надеюсь на вашу помощь

вот в этой функции в начале цикла программа останавливается из за m_chunks size = ???
Код

inline bool const cChunkManager::isCube( int chunkX, int chunkY, int chunkZ, int x, int y, int z )
{
***
    for( auto i = m_chunks.begin(); i != m_chunks.end() && !search; ++i )
***
}


Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  VoxelGame.rar 44,89 Kb
PM MAIL   Вверх
baldina
Дата 18.2.2015, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



в этом фрагменте ошибок map не видно, но вообще поиск в map организуется проще:
Код

auto pos = m_chunks.find(D3DXVECTOR3(chunkX, chunkY, chunkZ));
if (pos != m_chunks.end()) {
 ...
}


PM MAIL   Вверх
Lorise
Дата 18.2.2015, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 18.2.2015

Репутация: нет
Всего: нет



Цитата(baldina @ 18.2.2015,  14:42)
в этом фрагменте ошибок map не видно, но вообще поиск в map организуется проще:
Код

auto pos = m_chunks.find(D3DXVECTOR3(chunkX, chunkY, chunkZ));
if (pos != m_chunks.end()) {
 ...
}

знаю про find но передавая D3DXVECTOR3 - не находит

Добавлено через 9 минут и 33 секунды
есть предположение что ошибка где то в 2 создаваемом потоке тк он постоянно изменяет этот ассоциативный массив

доп вопрос. Есть ли хорошие статьи, инструменты, книги по отладки многопоточных приложений в VS желательно?
PM MAIL   Вверх
sQu1rr
Дата 18.2.2015, 18:27 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 11.11.2008
Где: london

Репутация: 3
Всего: 13



Цитата(Lorise @  18.2.2015,  14:54 Найти цитируемый пост)
есть предположение что ошибка где то в 2 создаваемом потоке тк он постоянно изменяет этот ассоциативный массив

Я надеюсь вы позаботились о мьютексах в таком случае? и не попдаете ли вы в дедлок?
PM MAIL Skype GTalk   Вверх
baldina
Дата 18.2.2015, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



Цитата(Lorise @  18.2.2015,  17:54 Найти цитируемый пост)
знаю про find но передавая D3DXVECTOR3 - не находит

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

естественно, в предположении что вы все делаете правильно в отношении сравнения float.

Цитата(Lorise @  18.2.2015,  17:54 Найти цитируемый пост)
хорошие статьи, инструменты, книги по отладки

https://msdn.microsoft.com/ru-ru/library/ms164746.aspx
http://www.ozon.ru/context/detail/id/17636939/

лучший инструмент - голова

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0632 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.