powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Чем в общем случае отличаются неблокирующие сокеты от асинхронных сокетов?
16 сообщений из 16, страница 1 из 1
Чем в общем случае отличаются неблокирующие сокеты от асинхронных сокетов?
    #38703303
Чем в общем случае отличаются неблокирующие сокеты от асинхронных сокетов?
Только тем, что если мы сначала отправили данные в сокет-1, а затем в сокет-2, то для асинхронных сокетов данные в сеть могут сначала отправиться из сокет-2, а потом из сокет-1; а для неблокирующих обязательно в том же порядке в котором вызывали?
...
Рейтинг: 0 / 0
Чем в общем случае отличаются неблокирующие сокеты от асинхронных сокетов?
    #38703336
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При неблокирующих операциях над сокетом операция выполняется успешно только если она не требует блокировки вызывающего потока. Результат при этом сразу возвращается в момент вызова.
При асинхронных операциях операция стартует в любом случае, а результат возвращается отдельно когда он будет известен.

Никакого отношения к порядку отправки в сеть это все не имеет.
...
Рейтинг: 0 / 0
Чем в общем случае отличаются неблокирующие сокеты от асинхронных сокетов?
    #38703345
Anatoly MoskovskyПри неблокирующих операциях над сокетом операция выполняется успешно только если она не требует блокировки вызывающего потока. Результат при этом сразу возвращается в момент вызова.
Пожалуйста, а можно пример, какая из операций может потребовать блокировки - и приведет к ошибке, и какая из операция не потребует блокировки и завершится успешно в момент вызова?
...
Рейтинг: 0 / 0
Чем в общем случае отличаются неблокирующие сокеты от асинхронных сокетов?
    #38703348
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
асинхронных сокетов,

Например чтение из сокета.
Если в буфере сокета есть непрочитанные данные, то они будут прочтены, иначе вернется ошибка EWOULDBLOCK (точно не помню текст).
...
Рейтинг: 0 / 0
Чем в общем случае отличаются неблокирующие сокеты от асинхронных сокетов?
    #38703351
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да в принципе любая операция с сокетом требующая пересылки данных по сети.
...
Рейтинг: 0 / 0
Чем в общем случае отличаются неблокирующие сокеты от асинхронных сокетов?
    #38704222
й
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вызов функции с асинхронной операцией возвращает код "ошибки" EWOULDBLOCK (WSAEWOULDBLOCK), но это вовсе НЕ ОШИБКА, а просто код, означающий, что вызванная функция не вернула результат собственно операции ввода/вывода(и не собиралась): реальный результат должен быть получен позже и через другую функцию - select()
...
Рейтинг: 0 / 0
Чем в общем случае отличаются неблокирующие сокеты от асинхронных сокетов?
    #38704280
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
й,

Все так, только заменить слово "асинхронной" на "неблокирующей".
Асинхронность не нуждается в EWOULDBLOCK
...
Рейтинг: 0 / 0
Чем в общем случае отличаются неблокирующие сокеты от асинхронных сокетов?
    #38704281
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
йреальный результат должен быть получен позже и через другую функцию - select()
Еще одна поправка.
select не сообщает о готовности результата.
Он сообщает о готовности начать операцию.
...
Рейтинг: 0 / 0
Чем в общем случае отличаются неблокирующие сокеты от асинхронных сокетов?
    #38705820
Anatoly Moskovskyй,

Все так, только заменить слово "асинхронной" на "неблокирующей".
Асинхронность не нуждается в EWOULDBLOCK
А в каких ОС есть реальные асинхронные операции с сокетами?
Кстати, и означает ли тогда асинхронность сокетов обязательное использование паттерна проактор: демультиплексирование IOCP (Win/AIX)?
А если используется реактор: epoll, pollset, kqueue (Linux, Solaris, AIX, HP_UX) - то это неблокирующие операции?
...
Рейтинг: 0 / 0
Чем в общем случае отличаются неблокирующие сокеты от асинхронных сокетов?
    #38706221
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
асинхронных сокетов,

Винда точно поддерживает асихронные операции через OVERLAPPED. IOCP это лишь один из способов работать с OVERLAPPED.

В Линуксе есть группа функций aio_*. Но не знаю насколько она допилена для сокетов.

В любом случае, асинхронность - это высокоуровневая концепция.
Она может на низком уровне быть реализована множеством способов - poll и аналоги, пул потоков, или прямая реализация в ОС.
Неблокирующие операции это всего лишь один из низкоуровневых технических моментов.
...
Рейтинг: 0 / 0
Чем в общем случае отличаются неблокирующие сокеты от асинхронных сокетов?
    #38706481
Anatoly Moskovskyасинхронных сокетов,

Винда точно поддерживает асихронные операции через OVERLAPPED. IOCP это лишь один из способов работать с OVERLAPPED.

В Линуксе есть группа функций aio_*. Но не знаю насколько она допилена для сокетов.

В любом случае, асинхронность - это высокоуровневая концепция.
Она может на низком уровне быть реализована множеством способов - poll и аналоги , пул потоков, или прямая реализация в ОС.
Неблокирующие операции это всего лишь один из низкоуровневых технических моментов.
Ну т.е. если предоставляемое API реактор - то это синхронная концепция, а если предоставляемое API проактор - то это асинхронная концепция (хотя и 1 и 2 могут быть на нижнем уровне реализованы через poll/select/epoll)?
...
Рейтинг: 0 / 0
Чем в общем случае отличаются неблокирующие сокеты от асинхронных сокетов?
    #38706523
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
асинхронных сокетовНу т.е. если предоставляемое API реактор - то это синхронная концепция, а если предоставляемое API проактор - то это асинхронная концепция
Ну получается что так.
Только непонятно что вы от меня хотите нового узнать :)
...
Рейтинг: 0 / 0
Чем в общем случае отличаются неблокирующие сокеты от асинхронных сокетов?
    #38706640
Anatoly Moskovskyасинхронных сокетовНу т.е. если предоставляемое API реактор - то это синхронная концепция, а если предоставляемое API проактор - то это асинхронная концепция
Ну получается что так.
Только непонятно что вы от меня хотите нового узнать :)
Просто хотел для себя полностью выстроить логическую цепь, для лучшего понимания :) Спасибо Вам за ответы :)
...
Рейтинг: 0 / 0
Чем в общем случае отличаются неблокирующие сокеты от асинхронных сокетов?
    #38714588
Anatoly Moskovskyасинхронных сокетовНу т.е. если предоставляемое API реактор - то это синхронная концепция, а если предоставляемое API проактор - то это асинхронная концепция
Ну получается что так.
Только непонятно что вы от меня хотите нового узнать :)
А допустим в асинхронной прокаторной библиотеке Boost.Asio есть асинхронные, но блокирующие операции и какие?
...
Рейтинг: 0 / 0
Чем в общем случае отличаются неблокирующие сокеты от асинхронных сокетов?
    #38714652
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
асинхронных сокетовА допустим в асинхронной прокаторной библиотеке Boost.Asio есть асинхронные, но блокирующие операции и какие?
Нету.
Есть синхронные и асинхронные.
Синхронные - либо блокирующие либо не.
А для асинхронных понятие "блокирование" не применимо.
...
Рейтинг: 0 / 0
Чем в общем случае отличаются неблокирующие сокеты от асинхронных сокетов?
    #38714866
Anatoly Moskovskyасинхронных сокетовА допустим в асинхронной прокаторной библиотеке Boost.Asio есть асинхронные, но блокирующие операции и какие?
Нету.
Есть синхронные и асинхронные.
Синхронные - либо блокирующие либо не.
А для асинхронных понятие "блокирование" не применимо.

А если что-то типа этого?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
void handler_b();
void handler_c();

void handler_a() {


 async_read_block(&handler_b);

 // wait for read

 async_read(&handler_c);
}

void handler_b() {

 async_write_block(&handler_a)

 // wait for write
}



А чего-нибудь типа такого? async_read() не выполниться пока не завершиться async_read_block(&handler_b), т.е. пока не запуститься handler_b.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Чем в общем случае отличаются неблокирующие сокеты от асинхронных сокетов?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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