Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Блокирует ли WindowProc саму себя ? / 10 сообщений из 10, страница 1 из 1
19.10.2007, 14:49:28
    #34881185
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокирует ли WindowProc саму себя ?
есть у меня нить. в ней есть окно. у окна есть процедура обработки сообщений.
делаю SendMessage(mywnd, mymsg1, ..); из другой нити
моя нить начинает обрабатывать сообщение mymsg1 - и делает SendMessage(mywnd, mymsg2, ...);
по идее SendMessage возвратиться только после обработки сообщения.
но ведь в данный момент моей нитью уже обрбатывается сообщение mymsg1.
внимание, вопрос: будет ли блокировка - что-то вроде deadlock-а ?
спасибо
...
Рейтинг: 0 / 0
19.10.2007, 15:02:40
    #34881234
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокирует ли WindowProc саму себя ?
нет, ключевое слово: очередь сообщений
...
Рейтинг: 0 / 0
19.10.2007, 15:06:28
    #34881250
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокирует ли WindowProc саму себя ?
не, я понимаю, что там очередь, но нить-то одна
...
Рейтинг: 0 / 0
19.10.2007, 15:30:18
    #34881322
pandrew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокирует ли WindowProc саму себя ?
--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
19.10.2007, 15:37:58
    #34881345
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокирует ли WindowProc саму себя ?
--Eugene-- пишет:

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

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

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

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

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
19.10.2007, 17:13:33
    #34881661
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокирует ли WindowProc саму себя ?
MasterZiv
egorych пишет:
> нет, ключевое слово: очередь сообщений

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

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

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


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