![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| wallstreet |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 11.8.2011 Репутация: нет Всего: нет |
Последовал вашим советам и вроде все заработало, но зависание при уменьшении матрицы осталось все равно.
Честно признаться работало и раньше все так же, когда вместо предложенного вами варианта я использовал в потоке1 просто
Возможно я просто еще догнать не могу сути мысли, но до подобных синтаксических конструкций типо:
я самостоятельно бы не дошел, во всяком случае сейчас, и меня это ужасно расстраивает. Ссылка на проект Это сообщение отредактировал(а) wallstreet - 18.4.2012, 15:19 |
||||
|
|||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
это всего лишь С++,
то же самое можно было записать проще:
и это было бы правильно p.s.:на счет зависания, пока не смотрел, пока нет возможности -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| wallstreet |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 11.8.2011 Репутация: нет Всего: нет |
Я вот тут подумал, таймер запускает потоки и отрисовывает раст с задаными параметрами, в часности с размером ::scrlh, который я беру из глобальной переменной в первом потоке и инициализирую сх и су, а в этот момент уже поменял глобальную переменную через диалог1.
И создается такая ситуация, что я меняю глобальную ::scrlh нажимая "ОК", именно в тот момент когда отрисовывается в WM_PAINT раст со старым значением ::scrlh, которая защищена критической секцией csShared. Так вот если защитить в диалоге1 изменение глобальной ::scrlh с помощью секции csShared, что бы инициализация глобальной ::scrlh проходила между тактами отрисовки по таймеру? Я спрашиваю, потому, что на домашнем компьютере это подтормаживание не видно почему-то))) |
|||
|
||||
| GremlinProg |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
я притормаживаний ни каких не вижу,
но тут конечно еще есть проблемы синхрнизации: 1. scrlh меняется в диалоге (в основном потоке) и читается в потоке 1, есть риск попасть в такую ситуацию, когда scrlh изменится в середине цикла:
в конечном счете, получится искажение массива в потоке scrlh читается под секцией csX, если в диалоге так же менять ее под секцией csX, то все будет хорошо 2. GetObject в 3-м потоке совершенно не нужна, она нужна в WM_PAINT, под секцией csShared, ничего стршного тут конечно нет, т.к. GetObject защищен той же csShared, просто зачем тратить время 3-го потока на работу основного (WM_PAINT) пока больше ничего военного не заметил Добавлено @ 07:34 это я еще не очень понял, т.е. ты думаешь, что если изменения scrlh защитить csShared, то отрисовка массива будет синхронизирована с этим изменением? если так, то нет, это просто приведет к тому, что ты не сделаешь эти 2 операции одновременно ( WM_PAINT и scrlh ), hSemaphoreX у тебя и так актуализирует изменения пользователя на сколько это только возможно, т.к. после
первый поток, если не загружен, сразу начинает работу с новыми параметрами Это сообщение отредактировал(а) GremlinProg - 19.4.2012, 07:35 -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||
|
|||||
| wallstreet |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 11.8.2011 Репутация: нет Всего: нет |
||||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 9 Всего: 45 |
То есть всё? На этом завершаем?))) Тогда, как любит говорить bsa, пометь тему решённой))) -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| wallstreet |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 11.8.2011 Репутация: нет Всего: нет |
ок
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |