powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / MS Windows: кнопка Close блокирует GUI
156 сообщений из 156, показаны все 7 страниц
MS Windows: кнопка Close блокирует GUI
    #39902276
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может не в том разделе спрашиваю, но нет раздела Программирование под Windows.

Много лет наблюдаю интересную картину. Если зажать и держать стандартную (на заголовке окна) кнопку "Закрыть окно", то перестаёт обновляться GUI. Вот запускаем банальный Notepad, зажимаем мышкой кнопку Закрыть и перестаёт мигать курсор.

Почему? И какова механика наблюдаемого явления?

PS: Погуглил слегка, но вроде ничего толкового не нашёл.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902329
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Событие идет на ФАКТ отпускания кнопки. А ты не отпустил.
Вот все и ждуны и ждут))).
Подходит?
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902361
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav,
Событие идет на ФАКТ отпускания кнопки. А ты не отпустил.
Вот все и ждуны и ждут))).
Подходит?

Нет, потому что такое происходит только при зажатии стандартных кнопок на заголовке окна. Остальных кнопок это не касается.

Да и вообще, предположение не логичное с точки зрения очереди событий.

Куча приложений так себя ведёт. Например, тот же Process Explorer от Руссиновича. И Qt приложения так себя ведут. Могу предположить, что зажатие этих кнопок блокирует событие WM_TIMER, например, или вообще всю виндовую очередь событий приложения.

Но почему?
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902371
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Нет, потому что такое происходит только при зажатии стандартных кнопок на заголовке окна
счас зажал кнопку и у меня нет того что ты описал.
"Суслика видишь?" (с)
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902373
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
Нет, потому что такое происходит только при зажатии стандартных кнопок на заголовке окна
счас зажал кнопку и у меня нет того что ты описал.
"Суслика видишь?" (с)

Какая ОС? Какое приложение? На чём написано?

Я только что под Win7 зажал кнопку Закрыть в Process Explorer (видимо чистый WinAPI) и в Qt-приложении. И они перестали обновляться.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902374
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Ооооо. Qt действительно так ведет. А студия нет.
Старье наверно. Так написано. Не многозадачно. Охота тебе голову ломать.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902376
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Студия - меню - Tools - Spy++
Запусти и посмотри класс главного окна.
Топик стартер должен больше работать отвечающих (с)
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902386
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav,
Ооооо. Qt действительно так ведет. А студия нет.
Старье наверно. Так написано. Не многозадачно. Охота тебе голову ломать.

Кстати, да. Студия резво продолжает обновляться... А стандартный Task Manager замерзает. Многопоточность тут, я думаю, не причём.

Самое интересное, сколько я помню так было всегда - начиная с Win95 и WinNT 4.0. И вот спустя десятилетия я решил разобраться. :)
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902395
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Многопоточность тут, я думаю, не причём.
лично я говорил про многозадачность)
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902450
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Win10, блокнот, просто поводил мышем над крестиком - курсор перестал моргать.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902457
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Win10, блокнот, просто поводил мышем над крестиком - курсор перестал моргать.
круто. Полностью перевернуло вопрос автора.
"перекуём баги на фичи"
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902492
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravСтудия резво продолжает обновляться...

Самоочевидный ответ: у студии в заголовке нарисованы ненастоящие кнопки. Поэтому нажатие
на них до DefWindowProc() не доходит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902497
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего имеет место оптимизация графических действий. Я помню что при drag window старые версии Windows-95
вообще не транслировали состояние окна. Только прозрачную рамку до тех пор пока вы не отпустите ЛКМ. В версиях
типа Windows-98 делался снимок (картинка) окна и фиксировалась то тех пор пока не отпустите ЛКМ тоже.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902501
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

petravСтудия резво продолжает обновляться...

Самоочевидный ответ: у студии в заголовке нарисованы ненастоящие кнопки. Поэтому нажатие
на них до DefWindowProc() не доходит.

Да, у приложений у которых не стандартный заголовок окна, такой фишки не наблюдается. Само собой, я постоянно акцентировал внимание, что кнопки стандартные.

PetroNotC Sharp
petrav,
Студия - меню - Tools - Spy++
Запусти и посмотри класс главного окна.
Топик стартер должен больше работать отвечающих (с)

Про Spy++ я забыл.

У Qt приложения полностью остановилась очередь виндовых сообщений. По логами видно, что QTimer тоже остановился.

У других приложений на С++ очередь виндовых сообщений остановилась на 99%. Остались только WM_MOUSEMOVE и WM_GETICON.

Как и предполагалась MS Windows, видимо, останавливает очередь событий. Но зачем?!
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902513
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
MS Windows, видимо, останавливает очередь событий. Но зачем?!
еще раз сказать?
Факт ОТПУСКАНИЯ КНОПКИ важен. Вы ее не отпустили.
А гуи в одном потоке работает.
Поставь в buttonClick( sleep
Будет заморозка?
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902521
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ помню что при drag window старые версии Windows-95
вообще не транслировали состояние окна.

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

petravНо зачем?!
Затем, что в MS тоже не поголовно гении, а этот код, скорее всего, никто не трогал со
времён былинных. Так что если там стоит, например, CaptureMouse + свой собственный цикл
обработки сообщений до отпускания кнопки, то... имеем то, что имеем.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902523
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
MS Windows, видимо, останавливает очередь событий. Но зачем?!
еще раз сказать?
Факт ОТПУСКАНИЯ КНОПКИ важен. Вы ее не отпустили.
А гуи в одном потоке работает.
Поставь в buttonClick( sleep
Будет заморозка?

Мне иногда кажется, что ты студент, который вчера на экзамене по программированию пятёрку получил.

Ответь:

- Что общего между зажатой кнопкой и Sleep?

- Почему зажатие других кнопок не приводит к заморозке? И события нормально продолжают идти?
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902527
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Затем, что в MS тоже не поголовно гении, а этот код, скорее всего, никто не трогал со
времён былинных. Так что если там стоит, например, CaptureMouse + свой собственный цикл
обработки сообщений до отпускания кнопки, то... имеем то, что имеем.

Да, у меня тоже было предположение, что это просто глюк который идёт чуть ли не с Win3.11 и который каким-то образом перескочил в семейство WinNT.

Или же это какая-то архитектурная проблема - идеологическая и они просто не могут исправить ошибку проектирования. :)
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902529
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
пятёрку получил
ты знал, ты знал!

petrav
Почему зажатие других кнопок не приводит к заморозке? И события нормально продолжают идти?

У каких других?
Сделай кнопу на окне и посмотри.
Ждем.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902533
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
исправить ошибку проектирования. :)
не вижу ошибки.
Если в винде на событие кнопы Копировать обработчик тормознуть, то кнопа так и будет Не отжата.
Тоже непорядок?
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902543
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpТоже непорядок?

Да, "тормознутие" это непорядок. Но в твоём коде этот непорядок на твоей совести.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902548
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
PetroNotC SharpТоже непорядок?

Да, "тормознутие" это непорядок. Но в твоём коде этот непорядок на твоей совести.конечно.
А то что юзверь тормознул и заснул на кнопе Закрыть окно на чьей совести?
)))
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902567
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как там дела с кодировками и с автоматизацией ваших заводов и параходов?
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902741
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Как там дела с кодировками и с автоматизацией ваших заводов и параходов?

Работаем. Владельцем заводов-пароходов пока не стал, но стих думаю угадал.

А что есть интересная тема для обсуждения? Вы же инженер программного обеспечения (Software Engineer), а настоящему инженеру всегда есть что сказать. :)
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902749
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу кнопки Close? Да так себе тема. Неинтересно.

Я тоже увлекался графическим и геометрическим моделированием но тема юае-строительства меня как-то обошла.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902774
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
По поводу кнопки Close? Да так себе тема. Неинтересно.

Я тоже увлекался графическим и геометрическим моделированием но тема юае-строительства меня как-то обошла.

А что такое "юае"?
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902785
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UI.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902820
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
По поводу кнопки Close? Да так себе тема. Неинтересно.
согласен. Интересно своё строить. А это системное Оси окно и кнопки.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902824
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
UI.

Понятно.

Ну тема кнопки Close не такая уж и тривиальная. Вопрос стоит так: может ли пользователь таким простым образом разрушить работу приложения? Ведь дело не в том, что там что-то обновляться перестало. А дело в том, что в потоке GUI могут приниматься какие-то решения. А если они не будут приняты вовремя, то по отчётам будет видно, что приложение подвисло надолго. И кто же в этом виноват?

Это, конечно, умозрительные рассуждения.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902826
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На рубеже возникновения всяких сред восстановления типа GHost, Acronis, e.t.c. эти все штуки полностью
копировали интерфейс Windows-95. Причем достаточно компактно (на нескольких килобайтах) они реализовывали
почти все нужные контролы вплоть до табличек. Я тогда студентом был. И мы в Borland C++ тоже соревновались
кто сделает UI в MS-DOS как можно более похожим на настоящий ТруЪ оконный.

Про макос мы тогда разве что в журналах и газетах читали. Поэтому с ним сравнивать не могли. Ну а Unix тогда
для нас существовал в виде чёрного экрана и мигающего курсора центрах проводной связи.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902828
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
какие-то решения

petrav
Это, конечно, умозрительные рассуждения.

Конечно умозрительные.
Какие решения если с ГУИ источник событи юзверь?
То есть ты никак не поймешь, заснул юзверь сам или он напечатал, а тормозит текстовый редактор.
Есть тесты для этого и простая человеческая логика.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902832
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
какие-то решения

petrav
Это, конечно, умозрительные рассуждения.

Конечно умозрительные.
Какие решения если с ГУИ источник событи юзверь?
То есть ты никак не поймешь, заснул юзверь сам или он напечатал, а тормозит текстовый редактор.
Есть тесты для этого и простая человеческая логика.

Есть оборудование взаимодействие с которым не критично по времени. Даже если реакция последует через секунду, то это приемлемо. Источник событий там QTimer, WM_TIMER, etc. Для упрощения архитектуры ПО многопоточность там излишняя. Но если по отчётам будет видно, что приложение висело две минуты и сорвало управление, то это будет проблемой. Понимаешь? Не, ты не понимаешь...

Ты лабы сделал? А то скоро сессия.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902835
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton
UI.

Понятно.

Ну тема кнопки Close не такая уж и тривиальная. Вопрос стоит так: может ли пользователь таким простым образом разрушить работу приложения? Ведь дело не в том, что там что-то обновляться перестало. А дело в том, что в потоке GUI могут приниматься какие-то решения. А если они не будут приняты вовремя, то по отчётам будет видно, что приложение подвисло надолго. И кто же в этом виноват?

Это, конечно, умозрительные рассуждения.

ОС Windows не является ОС реального времени. И ЕМНИП там даже предусмотрена буферизация графических событий.
Помните? Когда приложение долго не отвечает... вы можете накликать овер дохрена кликов и мышиных дейстий. И когда
основной цикл WndProc внезапно отмёрзнет - он получит пакетом всю очередь событий которые вы посылали ранее.

Эта механика - ВНЕ вашего приложения. Вы ее не программировали. Это услуга со стороны Win32GDI. И это реально
очень классная услуга. Я когда-то переходил с Windows на Linux Suse + KDE. Впечатление у меня было - ужасное.
Все те механики которые работали на Windows - морозились и глючили под KDE. Клавиатурные события - терялись.
Ты долбил мышкой по подзависшему окну и оно событий не принимало. Windows же на том-же железе работал вполне
терпимо.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902838
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Недавно 40 чел сгорело на суперджете. Командир джойстиком вверх вниз до отказа херачил, а рули просто не успевали за ним. Обратной связи не было.
Ну, пилот и в ступор впал. Не сообразил что с задержкой и плавно надо.. ГуИ качать.
Не смешно конечно. Программное обеспечение отечественное. И людей жалко.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902841
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

ОС Windows не является ОС реального времени. И ЕМНИП там даже предусмотрена буферизация графических событий.
Помните? Когда приложение долго не отвечает... вы можете накликать овер дохрена кликов и мышиных дейстий. И когда
основной цикл WndProc внезапно отмёрзнет - он получит пакетом всю очередь событий которые вы посылали ранее.

Никто и не пытается выдавить из ОС MS Windows жесткое реальное время. Но мягкое вполне возможно. По отчётам я вижу, что в приложении 99.98% ответов на внешнее воздействие произошло за миллисекунду. Где-то 0.0001% ответов прошло за 15 мс. Видимо это или работа с файловой системой, или с динамической памятью. Это более чем приемлемо.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902843
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
А дело в том, что в потоке GUI могут приниматься какие-то решения.
биллинг? Денежные транзакции?
Все решаемо, только предмет разговора нужен).
А не кнопка Выключить виндовс.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902844
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Недавно 40 чел сгорело на суперджете. Командир джойстиком вверх вниз до отказа херачил, а рули просто не успевали за ним. Обратной связи не было.
Ну, пилот и в ступор впал. Не сообразил что с задержкой и плавно надо.. ГуИ качать.
Не смешно конечно. Программное обеспечение отечественное. И людей жалко.

Оффтоп, но вся авионика (приборы) на СуперДжете импортные, кажется французские.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902845
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Где-то 0.0001% ответов прошло за 15 мс. Видимо это или работа с файловой системой, или с динамической памятью. Это более чем приемлемо.
ну. А бутылочное горлышко то где?
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902846
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton

ОС Windows не является ОС реального времени. И ЕМНИП там даже предусмотрена буферизация графических событий.
Помните? Когда приложение долго не отвечает... вы можете накликать овер дохрена кликов и мышиных дейстий. И когда
основной цикл WndProc внезапно отмёрзнет - он получит пакетом всю очередь событий которые вы посылали ранее.

Никто и не пытается выдавить из ОС MS Windows жесткое реальное время. Но мягкое вполне возможно. По отчётам я вижу, что в приложении 99.98% ответов на внешнее воздействие произошло за миллисекунду. Где-то 0.0001% ответов прошло за 15 мс. Видимо это или работа с файловой системой, или с динамической памятью. Это более чем приемлемо.

Ты когда - нибудь использовал QNX Neutrino?
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902848
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
авионика (приборы) на СуперДжете импортные, кажется французские
ну не ПО же?
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902849
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПО - программное обеспечение.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902853
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
авионика (приборы) на СуперДжете импортные, кажется французские
ну не ПО же?

Авионика - это и есть ПО. Приборы, всё ПО которое в них работает, автопилот.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902854
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Ты когда - нибудь использовал QNX Neutrino?

Я нет, но оно ставится в соседнем отделе. Любимая игрушка. Но у меня профиль другой.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902855
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravДля упрощения архитектуры ПО многопоточность там излишняя. Но если по отчётам будет видно,
что приложение висело две минуты и сорвало управление, то это будет проблемой. Понимаешь?
Не, ты не понимаешь...

Я тоже не понимаю человека, который создаёт большие и злобные грабли на будущее только для
того, чтобы облегчить себе работу здесь и сейчас.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902858
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Авионика - это и есть ПО. Приборы, всё ПО которое в них работает, автопилот.
ну ладно.
Суть в том, что командиру предъявлено уголовное обвинение.
Он джойстик вверх - а оно не реагирует.
Так у тебя?
Смотри чтоб не посадили.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902859
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton

Ты когда - нибудь использовал QNX Neutrino?

Я нет, но оно ставится в соседнем отделе. Любимая игрушка. Но у меня профиль другой.

По поводу "0.0001% ответов прошло за 15 мс". Давай порассуждаем. Вот если открыть
task manager windows - то там можно видеть сет процессов. Процессов которые случайным образом
испольуют кванты времени процессора а иногда и подгружают его различными вычислениями
природу которых мы не знаем. И существует не пустая вероятность что 2-3 или 4-5 из них
одновременно стали активничать. Вобщем я думаю то это и есть те самые 0.0001% задержек
которые ты наблюдал. Как с этим бороться - я не знаю.

Самый правильный ответ - уходить с Windows и неправильный - просто убивать эти процессы или
сделать так чтобы их вообще был минимум. В идеале тебе нужен только процесс твоего приложения.
Все остальное нужно сделать taskkill, и заблокировать навсегда в Services и заблокировать из меню
авто-запуска.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902865
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp

Так у тебя?

Нет.

PetroNotC Sharp
Смотри чтоб не посадили.

Я смотрю за этим.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902868
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Нет
ну может быть.
Пока в сухом остатке так:
Ты нажал на кнопку и не отпустил. Значит вмешался в основную очередь ГУИ.
Все по правилам.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902870
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
Авионика - это и есть ПО. Приборы, всё ПО которое в них работает, автопилот.
ну ладно.
Суть в том, что командиру предъявлено уголовное обвинение.
Он джойстик вверх - а оно не реагирует.
Так у тебя?
Смотри чтоб не посадили.

Немного не в тему. И не в тему данного супержета.
Вот к примеру в Айрбасе. Джойстик. И пилот эдак случайно повернулся и локтем его задел.
Нужно программно зафильтровать эту ошибку? Нужно. А нефик случайно его дёргать.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902872
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самый правильный ответ - уходить с Windows и неправильный - просто убивать эти процессы или
сделать так чтобы их вообще был минимум. В идеале тебе нужен только процесс твоего приложения.
Все остальное нужно сделать taskkill, и заблокировать навсегда в Services и заблокировать из меню
авто-запуска.

Даже если у вас там выключен Касперыч и MS-Indexing-Service то есть еще много служб
(сетевые) которые обеспечивают сетевую инфра-структуру Windows и обязаны реагировать
например на сетевые события.

Есть много примеров атак на отказ в обслуживании когда атакующий делает различного
рода интеракции с сетевыми службами листенереы которых подняты и просто обязаны
обслужить входящий реквест. Что из этого можно придумать - ну.. дофига чего.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902874
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

petravДля упрощения архитектуры ПО многопоточность там излишняя. Но если по отчётам будет видно,
что приложение висело две минуты и сорвало управление, то это будет проблемой. Понимаешь?
Не, ты не понимаешь...

Я тоже не понимаю человека, который создаёт большие и злобные грабли на будущее только для
того, чтобы облегчить себе работу здесь и сейчас.

Вы правы, как всегда.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902881
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Даже если у вас там выключен Касперыч и MS-Indexing-Service то есть еще много служб
(сетевые) которые обеспечивают сетевую инфра-структуру Windows и обязаны реагировать
например на сетевые события.

Есть много примеров атак на отказ в обслуживании когда атакующий делает различного
рода интеракции с сетевыми службами листенереы которых подняты и просто обязаны
обслужить входящий реквест. Что из этого можно придумать - ну.. дофига чего.

:) Речь, конечно, не об этом. Всё оборудование отключено от сети. Но не в этом дело. Там разные хакерские атаки через флешку - это всё излишне. Мы тут проще вопросы обсуждаем. А именно: если мы доверили процессу GUI принимать решения, то любой пользователь может вмешаться в этот процесс. А за логи отвечать нам. Поэтому нельзя. Видимо.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902888
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так не пиши процессы которые зависят от UI. Помнишь я говорил что время реакции человека - 100мс.
И время взаимодействия клавиатуры и мыши еще медленее. Вообще нельзя никакие тайм-критичные
вычисления завязывать на UI.

И пример с notepad - неудачен. Notepad - это однопточное UI приложение где весь жизненный цикл
живет внутри WndProc. Следовательно любая атака GDI событиями вызывает срабатывание хендлера
Notepad. Просто он - так спроектирован. Как и calc, paint, e.t.c и прочие бесплатные апликухи.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902893
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Так не пиши процессы которые зависят от UI. Помнишь я говорил что время реакции человека - 100мс.
И время взаимодействия клавиатуры и мыши еще медленее. Вообще нельзя никакие тайм-критичные
вычисления завязывать на UI.

И пример с notepad - неудачен. Notepad - это однопточное UI приложение где весь жизненный цикл
живет внутри WndProc. Следовательно любая атака GDI событиями вызывает срабатывание хендлера
Notepad. Просто он - так спроектирован. Как и calc, paint, e.t.c и прочие бесплатные апликухи.

Так я и не пишу приложения, которые зависят от UI. Но дело в том, что разработка многопоточного приложения, порядково сложнее однопоточного. Это, конечно, нам студенты сейчас расскажут как по этой тематике лабы ваяли и открыли для себя локеры. И как всё было просто, потом перешли на Яву...

Вопросов масса: например если рабочий поток шлёт неблокирующее сообщение потоку GUI, а тот висит. Вот что будет?

И главное деньги, как пояснить руководству, что это очень сложно?
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902896
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Так я и не пишу приложения, которые зависят от UI. Но дело в том, что разработка многопоточного приложения, порядково сложнее однопоточного. Это, конечно, нам студенты сейчас расскажут как по этой тематике лабы ваяли и открыли для себя локеры. И как всё было просто, потом перешли на Яву...

Вопросов масса: например если рабочий поток шлёт неблокирующее сообщение потоку GUI, а тот висит. Вот что будет?

И главное деньги, как пояснить руководству, что это очень сложно?
ну наконец то конкретика пошла.
Да асинхронные приложения писать сложнее.
Ты прав.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902900
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Вопросов масса: например если рабочий поток шлёт неблокирующее сообщение потоку GUI, а тот висит
Тебе mayton сказал - не писать в гуи ничего медленнее 0,1сек.
Дорого? Да!
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902907
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
А дело в том, что в потоке GUI могут приниматься какие-то решения.
"Уж сколько раз твердили миру", что основная работа должна делаться в отдельном потоке, "но только всё не впрок".
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902912
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
petrav
А дело в том, что в потоке GUI могут приниматься какие-то решения.
"Уж сколько раз твердили миру", что основная работа должна делаться в отдельном потоке, "но только всё не впрок".

Так я за это только и ратую. Но есть проблема: многопоточные приложения порядково сложнее однопоточных. Задача дёшево и быстро выпускать программы, которые надёжны и функциональны. И решают проблемы заказчика, а не философствование про что-то там. И главное надёжность. Вот в чём конфликт идеологий.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902917
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
petrav
А дело в том, что в потоке GUI могут приниматься какие-то решения.
"Уж сколько раз твердили миру", что основная работа должна делаться в отдельном потоке, "но только всё не впрок".

Допустим у нас есть поток GUI. Он выполняет свои задачи отображения данных. Есть рабочий поток, который управляет взаимодействием с устройством, есть поток чтения из Ethernet, причём чтение вообще блокирующее. Причём из потока GUI нужно управлять логикой выполнения в рабочем потоке. Нужно останавливать работу из потока чтения Ethernet, нужно перезапускать логику алгоритма внутри рабочего потока, но из потока GUI. И переключать чтение на другой канал данных. Нужно что бы поток GUI отображал всегда корректные данные. А если поток GUI принимает решение об управлении устройством? Нельзя? Нужно. Всё должно работать как часы.

И абсолютно потокобезопасно. Если пользователь нажимает кнопку Закрыть, то все потоки корректно завершают свою работу. И всё красиво без малейших задержек.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902918
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Вот в чём конфликт идеологий.
Вот только не надо разводить глубокой философии на мелких местах: есть требования и ограничения, а есть - возможность "попереставлять планку".
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902921
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravкоторые надёжны и функциональны.

Точнее будет "хоть как-то работают, но уже сейчас".

petravА если поток GUI принимает решение об управлении устройством? Нельзя? Нужно.
Всё должно работать как часы.
Сам по себе? Это фантастика. GUI поток может только передавать "внутрь" воздействия
пользователя. А если ползатель зажал кнопку и не отпускает, то и передавать нечего. Не
может мышь сразу два воздействия произвести.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902923
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
petrav
Вот в чём конфликт идеологий.
Вот только не надо разводить глубокой философии на мелких местах: есть требования и ограничения, а есть - возможность "попереставлять планку".

Без проблем. Есть люди, которые создают качественные приложения. Я всегда об этом говорил. А есть которые просто планку переставляют. И об этом я тоже говорил. В своих топиках я хотел бы разговаривать с профессионалами, а не с теми кто планку переставляет.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902924
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

petravА если поток GUI принимает решение об управлении устройством? Нельзя? Нужно.
Всё должно работать как часы.

Сам по себе? Это фантастика. GUI поток может только передавать "внутрь" воздействия
пользователя. А если ползатель зажал кнопку и не отпускает, то и передавать нечего. Не
может мышь сразу два воздействия произвести.

Не... не в этом дело. Мир несовершенен. Допустим мы спроектировали наше приложение так, что только из рабочего потока непосредственно взаимодействуем с устройством. Не всё так просто. Иногда нужно срочно разработать тестовый функционал, так что бы он работал из потока GUI напрямую с оборудованием - это заманчиво просто, но не убил поток рабочий. Это сложно.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902925
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Сам по себе? Это фантастика. GUI поток может только передавать "внутрь" воздействия
пользователя. А если ползатель зажал кнопку и не отпускает, то и передавать нечего. Не
может мышь сразу два воздействия произвести.

Т.е. ты рассуждаешь в терминах идеального проектирования и достаточного времени на реализацию. Но так бывает не всегда, это большая удача когда тебе позволили реализовать идеальный дизайн (архитектуру) приложения.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902930
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, смысл в чём? Смысл в поиске идеальной архитектуры, это невозможно, ищем компромисс.

- И так что бы логика приложения не зависела от GUI.
- И так что бы гарантированно потокобезопасно в нашей концепции.
- И что бы просто было в использовании нашего фундамента.

Чем мы за это платим? За всё нужно платить. В данном случае платим тем, что фундамент приложения заточен сугубо под наши задачи. Заточен в мелочах, причём в управляемых мелочах.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902931
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
И так что бы логика приложения не зависела от GUI.
Скажу грубо - враньё.
И начальство вас не поймет. И денег не выделит.
Если у вас учетка, и отклик гуи приемлемый, то БЛ можно делать прямо в потоке ГУИ.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902932
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БЛ - бизнес логика
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39902938
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903097
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сутки прошли. Профилактика закончилась.

По теме. Докину несколько ссылок.

1) Возможно автору будет интересно:
Тяпничная будущая мультипоточность

2) Доклад некого Куканова. Альтернативный взгляд на программирование мультипоточки. Не знаю будет ли применительно
к материальному и аппаратному обеспечению автора... но к сведению.
[spoiler]
YouTube Video
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903116
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
1) Возможно автору будет интересно:
Тяпничная будущая мультипоточность
хороший твой стартовый пост и посыл - программирование усложняется и асинхроность из экзотики превращается прямо нв глазах в необходимость. В андроид, компилятор/IDE отказывается компилировать если вызов http в основном потоке.))
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903117
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Ну и еще одно соображение.
Если тренд топика только теория, без подходов ЯП, то топик больше подходит в тему Разработка ИС.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903121
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton
1) Возможно автору будет интересно:
Тяпничная будущая мультипоточность
хороший твой стартовый пост и посыл - программирование усложняется и асинхроность из экзотики превращается прямо нв глазах в необходимость. В андроид, компилятор/IDE отказывается компилировать если вызов http в основном потоке.))

А как компилятор узнаёт в каком потоке код будет исполняться?
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903128
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
А как компилятор узнаёт в каком потоке код будет исполняться?
не знаю.
Я исполнил его/их волю, засунул в поток, выполнил проект и получил деньги.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903134
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
А как компилятор узнаёт в каком потоке код будет исполняться?
не знаю.
Я исполнил его/их волю, засунул в поток, выполнил проект и получил деньги.

Узнай.

Кстати, можно ссылку на проект? В магазине есть, надеюсь?
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903140
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Какой магазин, я же на работе.
По поводу узнать, не интересно. Есть системный код и есть прикладной. На оба направления вас не хватит.
Увы.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903142
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton,
Ну и еще одно соображение.
Если тренд топика только теория, без подходов ЯП, то топик больше подходит в тему Разработка ИС.

Не уверен. В разработку ИС можно говорить тогда когда есть техническое задание на целую ИС.
А в топике мы обсуждаем кнопку Close.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903144
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
А в топике мы обсуждаем кнопку Close
да он 10 раз говорил, что это просто абстрактный пример.
Кому она сдалась, эта кнопка.
Против кнопок СВОИХ, внутри окна, есть всяческие решения.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903147
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav,
Какой магазин, я же на работе.
По поводу узнать, не интересно. Есть системный код и есть прикладной. На оба направления вас не хватит.
Увы.

Странно, что не интересно. Но видимо, это либо результат работы встроенного статического анализатора, который можно отключить. Либо приложение таки собралось, но этот вызов отказался работать будучи запущенным в основном потоке.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903149
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Все профи на ветке андроид сказали что отключать проверку это не выход.
Как бы у каждого ЯП свои правила.
Насчет того что, в рантайме проверка или при компиляции я не помню. Давно было.
Для рантайма там куча средств из коробки:
авторЕсли ваш метод может быть вызван либо из основного (поток пользовательского интерфейса), либо из других потоков, вам нужна проверка, например:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
public void myMethod() {
   if( Looper.myLooper() == Looper.getMainLooper() ) {
       myAction();
   }
   else {

}
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903150
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно они правильно делают что не рекомендуют. Но это скорее похоже не на мультипоточность
а на контроль диспетчеризации сетевых евентов. Так работает JavaScript например. Малое число потоков
(2-4) контролирует 200 открытых сетевых сокетов. Даже не сокетов а логических хендлеров которые
обслуживают сетевую интеракцию веб-приложения.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903151
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Возможно они правильно делают что не рекомендуют.
не знаю причину. Меня как раз не волновало что гуи замрет на секунду пока http ответ придет. Юзверь один фиг сидит и пялится на экран.
В других ЯП больше свободы)
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903153
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Возможно они правильно делают что не рекомендуют. Но это скорее похоже не на мультипоточность
а на контроль диспетчеризации сетевых евентов. Так работает JavaScript например. Малое число потоков
(2-4) контролирует 200 открытых сетевых сокетов. Даже не сокетов а логических хендлеров которые
обслуживают сетевую интеракцию веб-приложения.

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

Раз уж заговорили про сокеты. У меня вот вопрос: зачем спроектировали блокирующее чтение? Т.е. это должен быть другой поток. Это проблема с синхронизацией. И из этого потока проблемно выйти при необходимости.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903155
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Вопрос в том сколько не очень качественного кода будет написано людьми, которые не слишком сильно задумываются как работает их приложение?
MS решило ребром. Ввели оператор async await вместо класса Thread.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903164
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне одному интересно в каком языке есть "вызов http" на уровне языка, а не библиотеки?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903169
d7i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот открыл в Windows 7 Диспетчер задач, закладка "Быстродействие" - ползет график загрузки ЦПУ.
Нажал клавишу <Ctrl> - и пока её удерживаю, приложение спит, график остановлен...

Как страшно жить...
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903173
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Мы этот вопрос еще не выясняли.
d7i,
d7i
Как страшно жить...

))).
Говорят, где то в поднебесной, один брокер заснул на клаве и купил ценных бумаг на много много нулей.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903174
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpМы этот вопрос еще не выясняли.

То есть вы не знаете на каком языке вы программировали. До чего техника дошла!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903176
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Технически, lisp, forth не различают уровни языка и библиотек. Поэтому в них - можно.

Теоретически можно Nemerle, но я тут не уверен. Пускай знающие скажут.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903183
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Переведи его вопрос. Писал я на java, а говорил про компилятор и ide платформы андроид.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903194
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

Я не спец в андроид. Но я понимаю мотивации плавного отказа от программирования на потоках в чистом виде.

Главная проблема - отсутствие формального доказательства правоты solution.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903199
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Но я понимаю мотивации плавного отказа от программирования на потоках в чистом виде.
читал сетования MS что на thread классах сложно писать и программисты часто ошибаются.
С++ конечно другой язык. И у него другое предназначение.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903202
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpПисал я на java
А можешь показать как выглядит в Java "вызов http", который "компилятор/IDE отказывается
компилировать"?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903203
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Я же выше поправился. Ран тайм написал. В курсе что это такое?
При запуске и вызове метода http будет райзе и падение приложения.
Тоже не поверил?
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903205
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpПри запуске и вызове метода http будет райзе и падение приложения.
Тоже не поверил?

Поверил. Я вообще способен поверить в то, что любое приложение любого автора может упасть.
Но всё равно хочу видеть код, к этому приводящий, и точное сообщение об ошибке, включая
(как это у Явы водится) стэк вызовов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903208
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Так бы и сказал. Поищу. Давно было.
А то не поймешь, подкалываешь или интересуешься))
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903248
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
добрался до компа.
Вот некоторая часть инфы
https://developer.android.com/reference/android/os/NetworkOnMainThreadException.html
Исключение на уровне операционки.
Отдельный поток обязателен ещё с анродида 3. То есть несколько лет.
android.os.NetworkOnMainThreadException
ЗЫ. Выключить можно парой строк для системы безопасности.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903250
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpИсключение на уровне операционки.

Жаба и Ведроид. "Мы не смогли придумать API, которое бы не затыкалось, поэтому будем
пристреливать ваши приложения пока вы не научитесь их писать так, как нам хочется."
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903253
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Они придумали.
Пристреливают через 30 минут фоновые процессы (doze), а в основном потоке не дают ничего делать.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903259
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И в Win32Api, и в Gnome/GTK+ примерно одинаковая архитектура main-window/WndProc цикла.
Основной поток - слушает события главного окна и диспетчеризирует их. Событий много.
Особенно от мыши. Поэтому расчитывать на сколь-либо удачную архитектуру их обработки
в этом цикле - так же наивно как и делать какую-то серъезную работу в JMS/MQ хендлере.
Его задача - просто запутить поток обработки из пула доступных потоков. Уже как это будет
реализовано. На потоках. На асинках. На акторах. Наверное и об этом топик.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903260
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonИ в Win32Api, и в Gnome/GTK+ примерно одинаковая архитектура main-window/WndProc цикла.

Да. И Win32 и Х протокол - выходцы из прошлого века, когда программирование считалось
сложным занятием, а программы были простыми. Тогда перекладывать на прикладника
обязанность крутить главный цикл выборки сообщений и следить за тем, чтобы их обработка не
была слишком долгой - имело смысл. Программисты были умными.

Но Ведроид-то - дитя этого века, когда программирование - занятие для школьников, а
программы делают туеву хучу разных сложных вещей. Они там, в гугле, не могли
самостоятельно крутить главный цикл под капотом RTL? Могли, благо прецедент есть в VCL. Но
они не захотели. Они могли http и в/в функции API сделать сугубо асинхронными? Могли, ибо
это безумно старая технология (я видел её ещё в RT-11). Но опять же не захотели. Или
просто не додумались. О чём я, собственно, и сказал выше.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903268
Z axis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Может не в том разделе спрашиваю, но нет раздела Программирование под Windows.

Много лет наблюдаю интересную картину. Если зажать и держать стандартную (на заголовке окна) кнопку "Закрыть окно", то перестаёт обновляться GUI. Вот запускаем банальный Notepad, зажимаем мышкой кнопку Закрыть и перестаёт мигать курсор.

Почему? И какова механика наблюдаемого явления?

PS: Погуглил слегка, но вроде ничего толкового не нашёл.
https://stackoverflow.com/q/18041622/9585016
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903271
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Могли, благо прецедент есть в VCL
нет прецендента окромя MS с async.
В дельфи VCL для прогера все тоже самое. Поток ГУИ и скласс Thread.
В MS только революционно.
Код: plaintext
1.
2.
3.
4.
.... 
await myFunction() //на 3 часа обработки
.... 
... 


Код просвистит мимо myFunction() не задерживаясь.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903301
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Dimitry Sibiryakov
Могли, благо прецедент есть в VCL
нет прецендента окромя MS с async.
В дельфи VCL для прогера все тоже самое. Поток ГУИ и скласс Thread.
В MS только революционно.
Код: plaintext
1.
2.
3.
4.
.... 
await myFunction() //на 3 часа обработки
.... 
... 


Код просвистит мимо myFunction() не задерживаясь.

Я, конечно, в Шарпе не разбираюсь, но что же тут революционного? Это можно и на WinAPI / C++ сделать кучей разных способов. Это как я вижу синтаксический сахар для самой простой под-задачи.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903315
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Это можно и на WinAPI
вы не читали выше что я писал. MS было недовольно что прогеры обращаясь напрямую к потоку, семафорам, мьютексам, часто делали ошибки и утечки памяти.
Я тоже могу выше код ИЗ ОДНОЙ СТРОКИ написать в сто строк.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903317
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Ваша тема была про то что нехватает простой работы с UTF-8?
А тут простая работа с потоками нужна?
))
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903326
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте дам лирическое отступление. Когда-то давно когда деревья были зеленые
и ОС==ms-dos и IBM 286 не было мультипоточности. Был 1 процессор и была однопроцессная
модель приложений. Правда были прерывания (IRQ(interrupt request)). Кстати перевод неправильный. Или семантика.
Мы под ними подразумевали хендлер прерываний. Например юзер подвигал мышь. Или диск закончил читать
сектор и в этот момент ваше приложение морозилось. И передавало управление хедлеру соотв. прерывания.
То в свою очередь быстро (!) отрабатывало и отдавало управление вашему приложению. Это создавало
иллюзию мультизадачной работы с периферией. Модемы. Дисководы. Сидюки и прочее.

Давайте просто подумаем и пофантазируем что с того времени измнилось в подходах к разработке?
Что стало лучше и хуже? Я сам не дам ответ на вопрос потомучто я пока еще не знаю.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903330
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
Это можно и на WinAPI
вы не читали выше что я писал. MS было недовольно что прогеры обращаясь напрямую к потоку, семафорам, мьютексам , часто делали ошибки и утечки памяти.
Я тоже могу выше код ИЗ ОДНОЙ СТРОКИ написать в сто строк.

Допустим я запустил этот await на три часа работы. Но часть данных этого потока мне нужно отображать на GUI, раз в 30-сек. Как же мне их получить без мьютекса? И это самое простое что может понадобиться.

В C++ поток тоже одной строчкой запускается.

PetroNotC Sharp
petrav,
Ваша тема была про то что нехватает простой работы с UTF-8?
А тут простая работа с потоками нужна?
))

Конечно, у меня по предметной области куча сложной работы.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903334
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav

Допустим я запустил этот await на три часа работы. Но часть данных этого потока мне нужно отображать на GUI, раз в 30-сек. Как же мне их получить без мьютекса? И это самое простое что может понадобиться.

Ты прикалываешся? Ты действительно не знаешь как работать без мьютексов?
Есть большое количество других способов снимать сведенья с потоков. Есть атомарные операции. CAS.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903335
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Но часть данных этого потока мне нужно отображать на GUI, раз в 30-сек. Как же мне их получить без мьютекса? И это самое простое что может понадобиться.
вот этот топик бы и завел. Он интереснее и практичнее.
....
В шарпе это внутри потока
Код: plaintext
1.
Action action = () => метод_в_гуи(this, e)


Думаю что мьютекс это слишком нижний уровень.
Нужен Post message.
В плюсах нет что ли?
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903338
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Конечно, у меня по предметной области куча сложной работы.
не выделяй GUI и на 50% меньше станет.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903341
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
petrav

Допустим я запустил этот await на три часа работы. Но часть данных этого потока мне нужно отображать на GUI, раз в 30-сек. Как же мне их получить без мьютекса? И это самое простое что может понадобиться.

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

Есть много всего. Atomic, lock free алгоритмы (если не ошибаюсь), post message. Что такое CAS не знаю. Может ещё что-то есть.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903344
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp

Думаю что мьютекс это слишком нижний уровень.
Нужен Post message.
В плюсах нет что ли?

В плюсах не встречал. Но я не очень в курсе того что они в 17 навернули. Post message есть в WinApi и Qt, да наверное в любой GUI библиотеке.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903347
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
PetroNotC Sharp

Думаю что мьютекс это слишком нижний уровень.
Нужен Post message.
В плюсах нет что ли?

В плюсах не встречал. Но я не очень в курсе того что они в 17 навернули. Post message есть в WinApi и Qt, да наверное в любой GUI библиотеке.
осталось сказать, закрывай тему и открывай Post message тему.
Шатает тебя сильно.
Выше про сокеты начал спрашивать.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903348
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
пропущено...

В плюсах не встречал. Но я не очень в курсе того что они в 17 навернули. Post message есть в WinApi и Qt, да наверное в любой GUI библиотеке.
осталось сказать, закрывай тему и открывай Post message тему.
Шатает тебя сильно.
Выше про сокеты начал спрашивать.

В Qt ещё можно асинхронно из рабочего потока сигнал вызвать, а в потоке GUI обработать - потокобезопасно. Будет как у тебя в C#.

Меня не шатает, у нас тема философская.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903350
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Там можно. Но ты же собирался только гуи в Qt.
А сигналы это классы от Qt.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903373
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
petrav

Допустим я запустил этот await на три часа работы. Но часть данных этого потока мне нужно отображать на GUI, раз в 30-сек. Как же мне их получить без мьютекса? И это самое простое что может понадобиться.

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

Между строк читается, что мьютекс -- это что-то deprecated и тру программеры им не пользуются. Я действительно не в курсе новомодных подходов в проектировании многопоточных приложений, но потому что я сильно сомневаюсь, что они упростят мне жизнь.

Может пример не очень хороший. Но вот насколько я помню, в SQL правильно спроектированная БД + механизм транзакций позволяет вообще не думать, что сервер поддерживает огромное количество подключений. Есть небольшой набор правил и всё. Правда у меня это было очень давно.

Вот если бы разработать такую библиотеку на С++.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903383
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Вот если бы разработать такую библиотеку на С++.
тогда нужно забыть о прикладной задаче - разработать ИС ххххххххж.
Удачи!
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903389
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
ОС==ms-dos и IBM 286 не было мультипоточности
На Intel 80286 работали всяческие Xenix-ы и полуоси. И все они были многозадачными, а некоторые даже многопоточными.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903415
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В виндовсе есть такая подсистема как I/O Completion Ports , которая позволяет параллелить ввод/вывод не выделяя по потоку на каждое соединение.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903435
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Может не в том разделе спрашиваю, но нет раздела Программирование под Windows.

Много лет наблюдаю интересную картину. Если зажать и держать стандартную (на заголовке окна) кнопку "Закрыть окно", то перестаёт обновляться GUI. Вот запускаем банальный Notepad, зажимаем мышкой кнопку Закрыть и перестаёт мигать курсор.

Почему? И какова механика наблюдаемого явления?



Там делается захват мыши и запускается модальный цикл обработки сообщений, в котором обрабатываются только
сообщения мыши. Это всё кончается событием, когда ты отпускаешь клавишу мыши, и генерируется системное событие.

Сообщение отрисовки (WM_PAINT) в Win "имеет низший приоритет" (в кавычках потому, что приоритетов у сообщений в WinAPI нет вообще, но именно это обладает низшим приоритетом), оно поступает в очередь сообщений только тогда, когда очередь пустая и хоть какая-то часть области окна инвалидирована (стёрта и требует перерисовки).

Поэтому когда работает цикл обработки мыши над системной кнопкой закрытия, сообщение WM_PAINT даже и не генерируется.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903447
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TВ виндовсе есть такая подсистема как I/O Completion Ports которая позволяет параллелить
ввод/вывод не выделяя по потоку на каждое соединение.

Это старый артефакт со времён когда в ней многопоточность отсутствовала в принципе.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903455
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Dima TВ виндовсе есть такая подсистема как I/O Completion Ports которая позволяет параллелить
ввод/вывод не выделяя по потоку на каждое соединение.

Это старый артефакт со времён когда в ней многопоточность отсутствовала в принципе.

Не, ты его с чем-то перепутал, это в XP появилось
https://docs.microsoft.com/en-us/windows/win32/fileio/createiocompletionport CreateIoCompletionPort function
...
Minimum supported client Windows XP
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903471
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpВ дельфи VCL для прогера все тоже самое.

Нет. Там есть принципиально революционное нововведение: главный цикл крутится "под
капотом", а "наружу" торчат только вызовы методов классов. Для следующего качественного
скачка остаётся только эти вызовы классы обработчиков грамотно спроектировать и вызывать
их асинхронно чтобы главный цикл не тормозился. В гугле, когда проектировали своё API, это
могли сделать, поскольку к тому моменту были уже и эта event-driven модель и
многопоточность для поддержки асинхронных вызовов. Но не сделали. Обошлись костылями в
виде исключения "вызов в неправильном потоке".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903477
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Нет. Там есть принципиально революционное нововведение: главный цикл крутится "под
капотом", а "наружу" торчат только вызовы методов классов.
да уже везде под капотом и не видно главный цикл обработки окна. Даже тут в Qt.
Поэтому куд уж лучше? Если только в плюсах нету.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903479
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Веде идут.
Класс главного окна конструктор.
И потом хэндлеры или каллбэки событий клики.
Message вообще нет ни в одном ЯП.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903491
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
mayton
ОС==ms-dos и IBM 286 не было мультипоточности
На Intel 80286 работали всяческие Xenix-ы и полуоси. И все они были многозадачными, а некоторые даже многопоточными.

Да возможно я ошибся в возможностях многозадачности 286.

Я хотел подчеркнуть что были другие подходы. И они - работали.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903495
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Basil A. Sidorov
пропущено...
На Intel 80286 работали всяческие Xenix-ы и полуоси. И все они были многозадачными, а некоторые даже многопоточными.

Да возможно я ошибся в возможностях многозадачности 286.

Я хотел подчеркнуть что были другие подходы. И они - работали.

Насколько я помню 286 не поддерживал вытесняющей многозадачности. Кооперативная многозадачность была.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903504
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpПоэтому куд уж лучше?

Именно туда, куда я и сказал: асинхронные вызовы обработчиков событий. Чтобы главный цикл
не переставал крутиться пока они работают.

petravНасколько я помню 286 не поддерживал вытесняющей многозадачности.

Для вытесняющей многозадачности не слишком нужна аппаратная поддержка. Конечно, защищённый
режим это приятно, как и команда на сохранение всех регистров, но ОСРВ вполне справлялась
и без них.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903508
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Насколько я помню 286 не поддерживал вытесняющей многозадачности. Кооперативная многозадачность была.
Кооперативная или вытесняющая - свойство планировщика.
Windows версии 3.x или Novell до версии 4.x - кооперативная многозадачность.
OS/2 или Windows NT - вытесняющая многозадачность.
OS/2 версии 1.x работала на i80286. Хотя это был тот ещё квест из-за необходимости поддерживать DOS-приложения.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903528
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav

Между строк читается, что мьютекс -- это что-то deprecated и тру программеры им не пользуются. Я действительно не в курсе новомодных подходов в проектировании многопоточных приложений, но потому что я сильно сомневаюсь, что они упростят мне жизнь.

Может пример не очень хороший. Но вот насколько я помню, в SQL правильно спроектированная БД + механизм транзакций позволяет вообще не думать, что сервер поддерживает огромное количество подключений. Есть небольшой набор правил и всё. Правда у меня это было очень давно.

Вот если бы разработать такую библиотеку на С++.

Вместо mutex можешь использовать critical_section. Она - быстрее. Бенчмаркали где-то в sql.ru.

В БД 99% проблем решаются за счёт изоляции транзакций. А изоляция - за счет версионности
и блокировок. В последнее время версионности отдаётся больше приоритета. Блокировки уровня ОС
тоже остаются но их время действия - минимизировано. И их назначение тоже другое.
Ближе к защёлке страницы (page = 4k) для предотрващения несогласованным чтением другим процессом.

По поводу того как создавать неблокирующие структуры данных в языках - это сложная тема.
Но в качестве примера - можно например указать языки семейства ФП. В них 99% структур данных
создаются - только для чтения. А модификация их - сводится к версионированию существующих.
Тоесть например если вы создаете новый список на основе сцепления гловы и хвоста других
списков - то их содержимое и суть - не меняется. Вы просто создаете в памяти еще одну ноду
которая агрегирует голову и список. Пример.
Код: plaintext
1.
2.
scala> 1 :: List(2,3,4)
res0: List[Int] = List(1, 2, 3, 4)


Так-же в лиспе. И так-же в Хаскелле.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903539
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Именно туда, куда я и сказал: асинхронные вызовы обработчиков событий. Чтобы главный цикл
не переставал крутиться пока они работают.
тогда дельфи получится.
Минусы - 1) не везде асинхронность нужна, а тут все обработчики будут в фоне.
2) блокировка гуи HDC будет ругаться. "изменяем объект созданый в другом потоке"
3) в клиент сервере это особо не нужно.
У меня в фоне 1% задачек.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903569
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
petrav

Между строк читается, что мьютекс -- это что-то deprecated и тру программеры им не пользуются. Я действительно не в курсе новомодных подходов в проектировании многопоточных приложений, но потому что я сильно сомневаюсь, что они упростят мне жизнь.

Может пример не очень хороший. Но вот насколько я помню, в SQL правильно спроектированная БД + механизм транзакций позволяет вообще не думать, что сервер поддерживает огромное количество подключений. Есть небольшой набор правил и всё. Правда у меня это было очень давно.

Вот если бы разработать такую библиотеку на С++.

Вместо mutex можешь использовать critical_section. Она - быстрее. Бенчмаркали где-то в sql.ru.

В С++ нет critical_section. Она есть в WinApi, по началу делает SpinLock некоторое количество раз, потом при неудаче переходит к системному вызову блокировки мьютекса. Но Вы, я вижу, упустили о чём идёт речь. С точки зрения программиста что критическая секция, что мьютекс - одно и тоже в плане написания качественного кода. Это часто очень сложно.

mayton
В БД 99% проблем решаются за счёт изоляции транзакций. А изоляция - за счет версионности
и блокировок. В последнее время версионности отдаётся больше приоритета. Блокировки уровня ОС
тоже остаются но их время действия - минимизировано. И их назначение тоже другое.
Ближе к защёлке страницы (page = 4k) для предотрващения несогласованным чтением другим процессом.

Неважно как оно реализовано внутри, важно что программист под SQL почти не задумывается о синхронизации данных.

mayton
По поводу того как создавать неблокирующие структуры данных в языках - это сложная тема.
Но в качестве примера - можно например указать языки семейства ФП. В них 99% структур данных
создаются - только для чтения. А модификация их - сводится к версионированию существующих.
Тоесть например если вы создаете новый список на основе сцепления гловы и хвоста других
списков - то их содержимое и суть - не меняется. Вы просто создаете в памяти еще одну ноду
которая агрегирует голову и список. Пример.
Код: plaintext
1.
2.
scala> 1 :: List(2,3,4)
res0: List[Int] = List(1, 2, 3, 4)


Так-же в лиспе. И так-же в Хаскелле.

Что ж у вас у всех примеры такие детские... Вот уж не знаю.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903572
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav

В С++ нет critical_section. Она есть в WinApi, по началу делает SpinLock некоторое количество раз, потом при неудаче переходит к системному вызову блокировки мьютекса. Но Вы, я вижу, упустили о чём идёт речь. С точки зрения программиста что критическая секция, что мьютекс - одно и тоже в плане написания качественного кода. Это часто очень сложно.

Вот и сахар тебе не сладкий. И огурец тебе не солёный.
Ты вообще не чем кодить-то собрался? У тебя - автоматизация мест под Windows. Ты сам оп этом писал.
Так что-же теперь будем обсуждать Posix thread mutex? Нахрена терять время?
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39903582
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жаль не могу найти посты Базиста с его базами. Там было сравнение.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39904221
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Мне одному интересно в каком языке есть "вызов http" на уровне языка, а не библиотеки?..

Вот еще в продолжение ветки.

Вызов http на языке Node. По идее на асинках. Один процесс ноды - однопоточный. Вроде как концепция у них такая.

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
http.get({
  hostname: 'localhost',
  port: 80,
  path: '/',
  agent: false  // Create a new agent just for this one request
}, (res) => {
  // Do stuff with response
});
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39904518
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не смог прочитать всю ветку. Если ещё не нашли истину, то (моя гипотеза):

1. Обработку NC (not client area) делается НЕ кодом приложения. Все скорее всего видели, как программы зависают, а неклиентская часть продолжает работать? Именно потому.
2. Курсор перестаёт мигать, потому что ушёл фокус с окна

2.1. Курсор начал мигать, потому что фокус вернулся

2.2. Если начать набирать ответ на sql.ru в форуме, а потом зажать кнопку close, смайлы слева будут продолжать плакать, смеяться и пучить глаза.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39904541
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb
Курсор перестаёт мигать, потому что ушёл фокус с окна
фокус не переходит туда где нет handle окна.
И потом выше пример был как "пролетая над гнездом кукушки"))) MouseMove тоже курсор замирал.
))
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39905084
Z axis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb
Не смог прочитать всю ветку. Если ещё не нашли истину, то (моя гипотеза):
Нашли. https://stackoverflow.com/q/18041622/9585016
CEMb
1. Обработку NC (not client area) делается НЕ кодом приложения.
Да. DefWindowProc в цикле ждёт события отжатия кнопки мыши и не возвращает контроль вызвавшей стороне пока этого не произошло.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39905534
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Давайте дам лирическое отступление. Когда-то давно когда деревья были зеленые
и ОС==ms-dos и IBM 286 не было мультипоточности. Был 1 процессор и была однопроцессная
модель приложений. Правда были прерывания (IRQ(interrupt request)). Кстати перевод неправильный. Или семантика.
Мы под ними подразумевали хендлер прерываний. Например юзер подвигал мышь. Или диск закончил читать
сектор и в этот момент ваше приложение морозилось. И передавало управление хедлеру соотв. прерывания.
То в свою очередь быстро (!) отрабатывало и отдавало управление вашему приложению. Это создавало
иллюзию мультизадачной работы с периферией. Модемы. Дисководы. Сидюки и прочее.

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

Ну я всё же предлагаю завершить мысль. Так что же изменилось в подходах к разработке по Вашему мнению?
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39905553
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton
Давайте дам лирическое отступление. Когда-то давно когда деревья были зеленые
и ОС==ms-dos и IBM 286 не было мультипоточности. Был 1 процессор и была однопроцессная
модель приложений. Правда были прерывания (IRQ(interrupt request)). Кстати перевод неправильный. Или семантика.
Мы под ними подразумевали хендлер прерываний. Например юзер подвигал мышь. Или диск закончил читать
сектор и в этот момент ваше приложение морозилось. И передавало управление хедлеру соотв. прерывания.
То в свою очередь быстро (!) отрабатывало и отдавало управление вашему приложению. Это создавало
иллюзию мультизадачной работы с периферией. Модемы. Дисководы. Сидюки и прочее.

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

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

Я основные свои тезисы описал здесь.
https://www.sql.ru/forum/1303834/tyapnichnaya-budushhaya-multipotochnost
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39905556
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А изменилось - неудобное API для программирования простых действий на UI которые требуют фоновых вычислений.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39905557
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как я и сказал: программы стали умные, а программисты - простые.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39905567
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее идет эволюционный процесс отбрасывания помех.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39906330
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
petrav

В С++ нет critical_section. Она есть в WinApi, по началу делает SpinLock некоторое количество раз, потом при неудаче переходит к системному вызову блокировки мьютекса. Но Вы, я вижу, упустили о чём идёт речь. С точки зрения программиста что критическая секция, что мьютекс - одно и тоже в плане написания качественного кода. Это часто очень сложно.

Вот и сахар тебе не сладкий. И огурец тебе не солёный.
Ты вообще не чем кодить-то собрался? У тебя - автоматизация мест под Windows. Ты сам оп этом писал.
Так что-же теперь будем обсуждать Posix thread mutex? Нахрена терять время?

Все разговаривают о чём-то своём. Товарищ PetroNotC Sharp начал продвигать мысль, что мьютекс -- это сложно, низкоуровнево и вообще не тру. Я начал с ним говорить в заданных им контексте и ключе. И ты тут вдруг такой выходишь с "оригинальной" мыслью: не нравится мьютекс -- используй критическую секцию! Но ведь это одно и тоже с точки зрения прикладного кода. Т.е. тут имеет место быть недопонимание.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39906334
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Но ведь это одно и тоже с точки зрения прикладного кода. Т.е. тут имеет место быть недопонимание.

Мой личный опыт (уж лет 18 назад) кодинга в Windows для тех сред (Windows2000/XP) показывает что критическая секция
работает быстрее чем Mutex.

Я только про это лишь говорил. Про скорость а не про юзкейсы или какие-то философские смыслы.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39906335
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Странный ты. Он дал ссылку. Сходи по ней и прочти стартовый пост.
Дай комменты с цитатами оттуда.
Там 9 пунктов и все разные.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39906336
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav,
Странный ты. Он дал ссылку. Сходи по ней и прочти стартовый пост.
Дай комменты с цитатами оттуда.
Там 9 пунктов и все разные.

Если я туда не иду, значит меня не заинтересовал тот мега пост о аж девяти пунктах. Возможно это странно, но уж как есть.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39906342
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Да. Я понял. Системный уровень у вас получается.
А тут вопрос на стыке....
Удачи!
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39906350
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
petrav
Но ведь это одно и тоже с точки зрения прикладного кода. Т.е. тут имеет место быть недопонимание.

Мой личный опыт (уж лет 18 назад) кодинга в Windows для тех сред (Windows2000/XP) показывает что критическая секция
работает быстрее чем Mutex.

Я только про это лишь говорил. Про скорость а не про юзкейсы или какие-то философские смыслы.

А контекст разговора был именно, что о use case и философии. Но возвращаясь к критической секции, мьютексе и WinApi (ведь критическая секция -- это WinApi).

В контексте WinApi, насколько я знаю, мьютекс -- это инструмент межпроцессного взаимодействия. Т.е. это механизм блокировки между отдельными процессами/программами. Для взаимодействия между потоками рекомендуется критическая секция. Естественно она быстрее, потому что по началу реализует spin lock и не работает на уровне процессов.

Но если вернуться в контекст std::mutex -- очень может быть, что реализация от MS, это та же самая критическая секция, которая реализует общепринятое понятие мьютекса, но не рекурсивного. Критическая секция в WinApi -- рекурсивная, std::mutex -- не рекурсивный.

Так что возможно и в плане производительности совет-то твой спорный. Может быть std::mutex -- это CRITICAL_SECTION в MSVC. Я не знаю.

PS: Конечно, возможны варианты типа того, что вызываем ::CreateMutex(), но там какой-то аргумент NULL и работает только на уровне данного процесса. Это не суть.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39907088
teo609
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CEMb
Если ещё не нашли истину, то (моя гипотеза):

1. Обработку NC (not client area) делается НЕ кодом приложения. Все скорее всего видели, как программы зависают, а неклиентская часть продолжает работать? Именно потому.


Примерно так и есть. Не уверен, что реализация именно такая как написал MasterZiv на 5й странице, но суть думаю верная.

Причем была разница в поведении винды, раньше было не так, и произошла если моя память не врет на одном из сервис паков ХР. Раньше если приложение зависало, зависала и его кнопка закрытия, а потом перестала.
Изначально винда действительно была максимально невытесняюще многозадачная, как задумано, и при закрытии окна приложения оно получало сообщение WM_CLOSE, должно было на него реагировать, закрываться, и типа все хорошо. Но потихоньку стало расти число приложений, которые глючили и не закрывались по сообщению WM_CLOSE, или закрывались не сразу. И сначала в MS ввели таймер и появились сообщения "похоже, приложение перестало отвечать", но оказались недостатки и у этого решения, во-первых, тамаута и сообщения приходилось сравнительно долго ждать при зависании, а во-вторых кнопка закрытия продолжала быть зависшей вместе с приложением, и это некомильфо все видели. Поэтому еще позже и обработку NC вынесли из кода приложения, как минимум в части обработки этой кнопки закрытия, чтобы четче, быстрее реагировать на зависание. Ну и кнопка закрытия теперь в отличие от приложения продолжает работать, как и винда, что имиджевый плюс для MS.

Сделав обработку нажатия кнопки закрытия в NC внешней, в MS получили возможность дополнительного реагирования в этой области, и в том числе, блокировать попадание входящих сообщений в очередь приложения, придерживая их в ядре; и не дожидаясь срабатывания таймаута, по которому устанавливалось зависание приложения, а сразу, при нажатии кнопки закрытия, т.е. до самого сигнала закрытия от юзера (отпускания кнопки). Именно поэтому, как я понимаю, пропадает реакция внутри окна, - пропадают входящие сообщения, на которые приложение реагирует, включая WM_TIMER.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39907703
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teo609
Сделав обработку нажатия кнопки закрытия в NC внешней, в MS получили возможность дополнительного реагирования в этой области
Секунду, оно вроде всегда было внешним, или почти всегда. Просто немного поменяли маршрут разруливания этого сообщения. И кстати, в том патче винды, если я не ошибаюсь, ввели такую штуку: вместо зависающего окна вешают фантома, который внешне похож на изначальное окно. Это внесло неудобство в софт работы с задачами. А ещё NC создало огромные трудности в скинировании приложений.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39907795
teo609
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CEMb
teo609
Сделав обработку нажатия кнопки закрытия в NC внешней, в MS получили возможность дополнительного реагирования в этой области
Секунду, оно вроде всегда было внешним, или почти всегда. Просто немного поменяли маршрут разруливания этого сообщения. И кстати, в том патче винды, если я не ошибаюсь, ввели такую штуку: вместо зависающего окна вешают фантома, который внешне похож на изначальное окно. Это внесло неудобство в софт работы с задачами. А ещё NC создало огромные трудности в скинировании приложений.


Как я это себе представляю на основе того что видел и насколько помню.
Стадия 1. Примерно c Windows 3.1, более ранних я не видел. Обработка кнопки закрытия в NC ведется в приложении, в DefWindowProc. В ней формируется сообщения WM_CLOSE, оно посылается в очередь сообщений, откуда забирается циклом сообщений, и в обработчике приложение должно красиво все закрыть и вызвать PostQuitMessage. Если что зависало ждать можно было полминуты, может и больше, не помню.
Стадия 2. Примерно с Windows 98 (SE?). Обработка кнопки закрытия в NC остается в приложении, а снаружи навешивается таймер, который отслеживает попадание в очередь WM_CLOSE, и если прошло достаточно времени и приложение не завершило обработку WM_CLOSE, появляется запрос от системы "кажется, тут зависло, не срубить ли?". Вопрос появлялся емнип секунд через 10.
В этих стадиях, если приложение зависало, то повторное нажатие на кнопку закрытия визуально ее не нажимало, она оставалась в верхнем положении, что соответствует зависанию в приложении, в его обработчике WM_CLOSE.
Возможно где-то в конце жизни этой 2й стадии было дополнительное окно поверх и в тех же координататх, с целью получить другую кнопку закрытия, и получить от юзера сигнал нажатиями, что зависание никуда не делось. У меня в памяти эти окна сильно не отложились. Может эту фазу стоило бы оформить в списке как 3ю стадию, а то что у меня 3я как 4ю.
Стадия 3. Примерно с ХР (SP?). Обработка кнопки закрытия в NC выносится из приложения, сообщение WM_CLOSE теперь формируется не в приложении, но посылается в него, таймаут сокращен до 5-6 секунд, кнопка закрытия, если нажимать повторно, визуально нажимается каждый раз. И теперь если ее нажимать часто, то даже до истечения таймаута можно раньше получить сообщение "похоже зависло". Окна-фантома нет. Т.е. это то как сейчас, по крайней мере я такого окна давно уже не видел.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39909020
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Неважно как оно реализовано внутри, важно что программист под SQL почти не задумывается о синхронизации данных.
естественно, потому что SQL - это функциональный язык

Вот и возьмите функциональный язык. Например, пишите на хаскеле, всё будет из каропки
правда, как освоите как сделать простейшие действия
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39909758
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то топик переродился в разговор обо всём и ни о чём, так мне кажется.
Думаю, пора закрывать эту лавочку.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39909831
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,
Она изначально была такая. Кому интересна кнопочка закрытия окна. Закрывает и ладно.
...
Рейтинг: 0 / 0
MS Windows: кнопка Close блокирует GUI
    #39909840
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да можно закрыть. Тут давно не по теме всё.
...
Рейтинг: 0 / 0
156 сообщений из 156, показаны все 7 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / MS Windows: кнопка Close блокирует GUI
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]