| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > проблема с критическими секциями |
| Автор: Yra 7.2.2008, 16:54 | ||||
| Добрый день. Написал "прожку", которая работает коряво. Эта программа создаёт 2 потока. Оба потока используют одну функцию. В фунцции критическая секция. На форме у меня одна кнопка, два окна редактирования. по нажатии на конпку, создаётся 2 потока. дальше, функция (обработчик нажатия на кнопку) ждёт завершения 2х потоков и удаляет критическую секцию. вот код проги:
в итоге, 1й созданный поток отрабатывает свой код. а 2й поток не приступает к работе. если вызывать функцию ожидания так - WaitForMultipleObjects(2, hT, TRUE, INFINIT); программа просто виснит P.S. если код функции потока переписать так :
то программа работает как нодо....... вопрос: почему? |
| Автор: Lazin 7.2.2008, 17:02 |
| программа не работает нормально из за этой строчки: то-что программа стала работать "как надо" - это просто везение, на самом деле она не работает, перестанет работать когда измениться фаза луны)) смотри документацию по Synchronize |
| Автор: Lazin 7.2.2008, 17:43 |
компоненты VCL можно использовать только в главном потоке, потому-что они используют очередь сообщений, тоесть неявно происходит обращение к ним из разных потоков. использовать их можно только через ф-ю Synchronize. |
| Автор: Yra 7.2.2008, 17:55 |
| теперь придельно ясно! спасибо! |