powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Блокирует ли WindowProc саму себя ?
10 сообщений из 10, страница 1 из 1
Блокирует ли WindowProc саму себя ?
    #34881185
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть у меня нить. в ней есть окно. у окна есть процедура обработки сообщений.
делаю SendMessage(mywnd, mymsg1, ..); из другой нити
моя нить начинает обрабатывать сообщение mymsg1 - и делает SendMessage(mywnd, mymsg2, ...);
по идее SendMessage возвратиться только после обработки сообщения.
но ведь в данный момент моей нитью уже обрбатывается сообщение mymsg1.
внимание, вопрос: будет ли блокировка - что-то вроде deadlock-а ?
спасибо
...
Рейтинг: 0 / 0
Блокирует ли WindowProc саму себя ?
    #34881234
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет, ключевое слово: очередь сообщений
...
Рейтинг: 0 / 0
Блокирует ли WindowProc саму себя ?
    #34881250
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не, я понимаю, что там очередь, но нить-то одна
...
Рейтинг: 0 / 0
Блокирует ли WindowProc саму себя ?
    #34881322
pandrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
--Eugene--не, я понимаю, что там очередь, но нить-то одна
Запросто все можно грохнуть из-за переполнения стека.
WinSDKThe SendMessage function sends the specified message to a window or windows. The function calls the window procedure for the specified window and does not return until the window procedure has processed the message.
В очередь сообщения попадают по PostMessage, а так обычная рекурсия.
...
Рейтинг: 0 / 0
Блокирует ли WindowProc саму себя ?
    #34881345
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene-- пишет:

> по идее SendMessage возвратиться только после обработки сообщения.
> но ведь в данный момент моей нитью уже обрбатывается сообщение mymsg1.
> внимание, вопрос: будет ли блокировка - что-то вроде deadlock-а ?

Да, запросто может быть. И часто бывает. А чтобы не было, есть
SendMessageTimeout().
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Блокирует ли WindowProc саму себя ?
    #34881347
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorych пишет:
> нет, ключевое слово: очередь сообщений

SendMessage не работает через очередь сообщений.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Блокирует ли WindowProc саму себя ?
    #34881375
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> В очередь сообщения попадают по PostMessage, а так обычная рекурсия.

тоесть, SendMessage не ставит сообщение в очередь, а сразу вызывает WindowProc?
но в таком случае, WindowProc будет исполнена в той же нити, в которой произошел вызов SendMessage?
...
Рейтинг: 0 / 0
Блокирует ли WindowProc саму себя ?
    #34881414
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все ясно:

If the specified window was created by the calling thread, the window procedure is called immediately as a subroutine. If the specified window was created by a different thread, Windows switches to that thread and calls the appropriate window procedure. Messages sent between threads are processed only when the receiving thread executes message retrieval code. The sending thread is blocked until the receiving thread processes the message.
...
Рейтинг: 0 / 0
Блокирует ли WindowProc саму себя ?
    #34881661
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
egorych пишет:
> нет, ключевое слово: очередь сообщений

SendMessage не работает через очередь сообщений.
Posted via ActualForum NNTP Server 1.4 Мда... лажанул, прошу простить великодушно
...
Рейтинг: 0 / 0
Блокирует ли WindowProc саму себя ?
    #34882241
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene-- пишет:

> тоесть, SendMessage не ставит сообщение в очередь, а сразу вызывает
> WindowProc?
> но в таком случае, WindowProc будет исполнена в той же нити, в которой
> произошел вызов SendMessage?

Нет, не в той же. Так как ты это описал, происходит только если вызывающий
и вызываемый работают в одном потоке. А если нет - вызывающий ждет
вызываемого. А у вызываемого в очередь сообщений сообщение не ставится -
напрямую вызывается WndProc.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Блокирует ли WindowProc саму себя ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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