Проблема совместного доступа???
От: Corvin Украина  
Дата: 06.08.02 09:15
Оценка:
Дело обстоит так: У меня Запускаются 3 процесса, — 2 в TimerQueue и один, — просто WM_TIMER. Первый раз в секунду увеличивает поле с временем у моего класса, второй каждую секунду выводит в ЛистКонтрол то, обновленную информацию, а третий каждые 5 секунд записывает состояние всех компьютеров (это у меня программа администрации клуба) в БД (MS SQL Server). Если работают любые 2 пары процессов, то все ОК, но как только включаю все 3, прога виснет, причем через непонятные промежутки времени, — может повиснуть через 5 секунд, а может и через 50. У меня подозрения, что проблема лежит в совместном доступе к одним и тем же таблицам, но ведь этого быть не должно — (я открываю все RecordSet'ы как CRecordSet::snapshot). Пробовал с помощью Event'ov контролировать состояние каждого процесса, но не помогло... Помогите, плз...
Re: Проблема совместного доступа???
От: BigBob  
Дата: 06.08.02 09:50
Оценка:
Попадал на аналогичные грабли, правда с DAO-классами. Люди в конференциях объяснили, что MFC-калассы для работы с DAO не полностью поддерживают многопоточность. Посоветовали использовать критические секции для ограничения доступа к базе только одним потоком в единицу времени. Мне вроде помогло. Может тебе тоже попробовать поместить куски кода, работающие с базой в критические секции?
Re[2]: Проблема совместного доступа???
От: Corvin Украина  
Дата: 06.08.02 10:32
Оценка:
Здравствуйте BigBob, Вы писали:

BB>Попадал на аналогичные грабли, правда с DAO-классами. Люди в конференциях объяснили, что MFC-калассы для работы с DAO не полностью поддерживают многопоточность. Посоветовали использовать критические секции для ограничения доступа к базе только одним потоком в единицу времени. Мне вроде помогло. Может тебе тоже попробовать поместить куски кода, работающие с базой в критические секции?


Спасиба, идея хорошая, теберь осталось найти хороший пример использования ентих секций,- в МСДНе как обычно ничего хорошего нет...
Re[2]: Проблема совместного доступа???
От: Аноним  
Дата: 06.08.02 11:45
Оценка:
Здравствуйте BigBob, Вы писали:

BB>Попадал на аналогичные грабли, правда с DAO-классами. Люди в конференциях объяснили, что MFC-калассы для работы с DAO не полностью поддерживают многопоточность. Посоветовали использовать критические секции для ограничения доступа к базе только одним потоком в единицу времени. Мне вроде помогло. Может тебе тоже попробовать поместить куски кода, работающие с базой в критические секции?


Слушай, разобрался. И помогло! Спасибба, а то я уже второй день на одном месте сижу
Re[3]: Проблема совместного доступа???
От: BigBob  
Дата: 06.08.02 12:01
Оценка:
А я уже примерчик на мыло отправил ;) Очень рад, что тебе пригодилось!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.