crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Работа с потоками, борьба с зависанием при загрузке файлов(файла)
AD
  опции профиля:
сообщение 6.2.2009, 12:14
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Работа с потоками выглядит довольно хитро. В главном потоке: есть вектор, в котором хранятся считанные данные, есть функции по заполнению этого вектора. В дополнительном потоке: есть вектор со считанными данными, через определенное время (3 секунды) вызывается функция главного потока заполнения вектора, вектор дополнительного потока очищается. В дополнительном потоке происходит как раз чтение и разбор файла (ну соответственно и заполнение вектора доп. потока). После чтения всего файла если вектор доп. потока не пуст, то вызывается функция главного потока заполнения вектора.

Проблема в том, что при загрузке определенных лог-файлов происходит зависание программы. Каким образом заставить программу вывалится в дебаггер именно при зависании? У кого-нибудь есть какие-нибудь идеи?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Tonal
  опции профиля:
сообщение 9.2.2009, 12:01
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


Похоже на дедлок.
Запусти под отладчиком, дождись зависона и стопни процесс - дальше смотри вде висишь.
Ещё можно записывать в лог каждый захват/освобождение мютекса/симофора.
Потом смотри где клинчь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 9.2.2009, 12:24
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(Tonal @ 9.2.2009, 12:01) *
Похоже на дедлок.
Запусти под отладчиком, дождись зависона и стопни процесс - дальше смотри вде висишь.

А как остановить процесс во время клинча? Я не делал раньше так, поэтому даже не знаю....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.1.2025, 13:02