Форум программистов, компьютерный форум, киберфорум
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.84/19: Рейтинг темы: голосов - 19, средняя оценка - 4.84
1 / 1 / 1
Регистрация: 08.04.2014
Сообщений: 31
1

Синхронные и асинхронные сообщения!

24.04.2014, 01:21. Просмотров 3901. Ответов 4
Метки нет (Все метки)

Объясните максимально доходчиво, простыми словами, как это работает... синхронные- это обычные без очереди вроде бы ясно, а асинхронные не могу понять, "пощупать"...как они приходят непосредственно окну. Это всё равно, что растолкать очередь людей за хлебом??
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.04.2014, 01:21
Ответы с готовыми решениями:

Асинхронные сокеты Windows
Здравствуйте, форумчане! Интересует вопрос как можно синхронно отправить сообщение через...

Асинхронные сокеты , ф-я WSAAsyncSelect и ее применение
Доброго времени суток , возникла проблема с асинхронностью сокетов , а именно функцией...

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

Литература. Синхронные и асинхронные автоматы
Поделитесь пожалуйста литературой. Необходимо написать программу работы синхронного автомата, и еще...

4
Заблокирован
24.04.2014, 11:10 2
Смотря о каких сообщениях ты говоришь. Если ты про SendMessage и PostMessage, то SendMessage - синхронное так сказать, а PostMessage - асинхронное, если конечно можно так выразиться.
Фишка в том, что когда ты вызываешь функцию SendMessage, поток, из контекста которого ты вызвал эту функцию, будет ждать её возврата, в то время как PostMessage возвращает управление мгновенно.
Что же они делают? Да просто шлют Windows-ные сообщения окну, окно в свою очередь принимает их в функции - обработчике сообщений (евент хэндлер, кол бэк, он же WndProc обычно в хэлоу ворлд :-) ).
Так вот, SendMessage посылает сообщение и не возвращает управление до тех пор, пока WndProc Так сказать его не примет и не обработает, а PostMessage просто ставит сообщение в очередь и сражу же возвращает управление.

По поводу очереди людей за хлебом .... Ну...
Смари, ты идёшь с мамой.... не, лучше с папой, папа около магазина открыл баночку пивка, прикурил сигарету и не стал заходить с тобой в магазин за хлебом, сказав тебе - на сынок лавэ, метнись пока за хлебом в этот магаз, а я тебя выходе подожду, чтоб ты мне хлеб и сдачу отдал, как выйдешь, т.к. я тебе, малолетний, не доверяю и ты можешь со сдачей метнуться куда нибуть без меня В общем ты вышел из магазина и отдал папаше сдачу и хлеб - всё вы пошли дальше, дамой наверное. (это пример SendMessage).
А теперь тот же самый пример, но папаша открыв баночку пивка и прикурив сигарету, сказал тебе - метнись сынок в этот магаз за хлебом, я пойду домой пока, занесёшь потом его домой. Это как раз пример PostMessage, то есть он отправил тебя магаз и пошёл дальше по своим делам (поставил сообщение в очередь).
Надеюсь понятную сказку придумал
2
1 / 1 / 1
Регистрация: 08.04.2014
Сообщений: 31
24.04.2014, 14:58  [ТС] 3
newbie666, ты случайно не перепутал, а то у меня в книге(Петзольд) написано так
Часто асинхронные сообщения являются результатом вызова определенных функцийWindows или
непосредственным результатом вызова функции SendMessage. (Кроме этого, сообщения могут помещаться в
очередь сообщений посредством вызова функции PostMessage.)
А кроме функций пост и сенд в каких случаях ещё приходят асинхронные сообщения?
0
Заблокирован
24.04.2014, 15:17 4
Цитата Сообщение от garjo_099 Посмотреть сообщение
ты случайно не перепутал
нет, я ничего не перепутал, я не знаю, что в твоей книге понимается под асинхронными сообщениями. Сообщения Windoows, аля WM_USER, WM_TIMER И тд - это просто переменные, хранящие свой идентификатор, посылать в Windows сообщения на сколько я помню можно только посредствам SendMessage, PostMessage, PostThreadMessage и SendDlgItemMessage ...
0
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
24.04.2014, 16:45 5
Чисто по моему:
Синхронность это когда, к примеру с потоками(createThread) создали 3 потока, дали им задания в очерёдности и в той же очерёдности они их вернули. Но на деле обстоит по другому, например второй поток может вернуть решение раньше первого(т.е. имеется в виду первый - этот именно тот кому первую задачу дали), т.е. в этом случае синхронности нет...

newbie666, класс
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.04.2014, 16:45

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Клиент-сервер. Синхронные и асинхронные сокеты
Здравствуйте, в чем разница между синхронными и асинхронными сокетами? слышал что с асинхронным...

Синхронные ScrollBox'ы
На форме лежат скроллбоксы, как сделать чтобы при прокрутке одного (вертикально, горизонтально)...

Синхронные двигатели
В политехе на лабораторных работах по электрическим машинам запускали синхронные движки с числом...

Синхронные запросы
Добрый вечер! Кто знает как "убить" синхронные запросы? У меня в консоли выходит сообщение что у...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.