|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
Потоки и асинхронность25.03.2019, 11:47. Показов 12642. Ответов 100
Если есть сервер то для каждого клиента было бы логично создавать отдельный поток,но проблема в том что это очень ресурснозатратно,каким образом сделать чтобы не создавать много потоков?
0
|
|
| 25.03.2019, 11:47 | |
|
Ответы с готовыми решениями:
100
Потоки. Асинхронность Потоки и асинхронность для бота в телеграмме Асинхронность |
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 25.03.2019, 17:10 [ТС] | |
|
0
|
|
|
|
||
| 25.03.2019, 17:28 | ||
![]() Если действительно нужно прямо срочно, то посмотри на уже упомянутый boost::asio, разберись с ней без спешки, разбери до деталей примеры. Не пытайся пока понять разницу между асинхронностью и параллельностью, как показывает практика для начинающих это сложно. Покури бустовые мануалы, посмотри на паттерн Event loop (начать можно отсюда)
0
|
||
|
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
|
||||||||||||||
| 25.03.2019, 17:53 | ||||||||||||||
|
Отличие в том, что вам не нужно самому думать о нюансах работы с тредами. Ася возьмет всю эту рутину на себя. Например, асинхронное подключение к сокету в асе выглядит так:
И таким образом вам сообщат что connect завершился. Вам (пользователю) при этом не нужно думать самому, как это все устроенно внутри. Вам не нужно думать ни о каких потоках, ни о чем таком. Вы просто указываете функцию-коллбек, и когда работа завершена - вам сообщают. Все остальное время можете в своей программе делать какие угодно свои дела. В этой простоте использования вся суть "асинхронного дизайна". -------------------------------------------------------------------------------- Некоторые люди любят приводить асю в качестве примера "асинхронного дизайна". И она действительно предоставляет такие возможности. Вот только они почему то думают, будто бы она это делает по волшебству. На самом деле, ася - ни что иное, как сложно замороченный тред-пул. И хотя обычно, асю используют для высокоуровневой работы с сокетами, ничто не мешает использовать её именно как тред-пул: https://rextester.com/YEW86244
myTask можно описывать любую свою логику.Она будет исполняться "где то в отдельном потоке". И можно не заморачиваться, как их создавать/останавливать. И как будет балансироваться нагрузка задач между тредами. Сначала реализуйте эту схему хотя бы в режиме "один клиент - один сервер". Потому что вы пытаетесь сделать это на голых сокетах-беркли. Там одной только писанины на целый вечер. Вот когда у вас уже будет на руках готовая рабочая модель, тогда можно будет адаптировать её для высокой нагрузки. Добавлено через 3 минуты Зачем нужно прерывать работу важной процедуры? Где логика?
0
|
||||||||||||||
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|
| 25.03.2019, 18:02 | |
|
0
|
|
|
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
|
|||
| 25.03.2019, 18:19 | |||
|
Добавлено через 6 минут И вообще, описали "событийно управляемую модель", а вовсе не "асинхронный дизайн". Главный смысл асинхронки: задачи выполняются в фоне, в то время как процесс может свободно заниматься чем то ещё. Если ваш процесс пока задачи выполняются в фоне - значит у вас уже не асинхронный дизайн.
0
|
|||
|
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
|
|
| 25.03.2019, 18:29 | |
|
0
|
|
|
|
||
| 25.03.2019, 19:02 | ||
|
eva2326, ваши слова
Но ведь boost::asio так и устроена - она крутит эвент луп пока выполняются задачи, согласно вашим словам у boost::asio не асинхронный дизайн. Почему такая реакция на свои же слова?
0
|
||
|
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
|
||
| 25.03.2019, 19:52 | ||
|
Какая разница, что делает ася? Если при этом мои треды могут заниматься всем, чем захотят?
0
|
||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
||
| 25.03.2019, 20:10 [ТС] | ||
|
eva2326,
0
|
||
|
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
|
||
| 25.03.2019, 20:17 | ||
|
Как работает асинхронное API? На самом деле это аппаратная технология, ты выделяешь память под данные и просишь ОС "запиши туда N байт из какого-то устройства ввода-вывода". Далее ОС обращается к драйверу, а тот посылает соответствующую команду нужному контроллеру "записать N байт через DMA". Также вызывающий поток может "уснуть" в ожидании завершении операции, в таком случае контроллер пошлет запрос на аппаратное прерывание по окончанию записи и ОС разбудит поток. Смысл таких сложностей - это разгрузить ЦП обслуживанием оборудования. На базе этого и состоится настоящее асинхронное API без лишних потоков. Но асинхронность можно и имитировать через потоки.
0
|
||
|
2737 / 894 / 331
Регистрация: 10.02.2018
Сообщений: 2,137
|
|
| 25.03.2019, 20:18 | |
|
ReYalp, посмотрите документацию на функцию select или виндовый вариант с WSAEventSelect. Общий смысл такой: поток должен заниматься не работой с клиентом, а выполнять отдельные запросы. Между запросами от одного клиента приходят запросы от других клиентов и поток их выполняет. Когда поток выполнил запрос, он впадает в ожидание новых запросов. Какой запрос придёт раньше, тот и выполнится. Что бы ждать запросы сразу от множества соединений и используется select.
0
|
|
|
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
|
||
| 25.03.2019, 20:24 | ||
|
0
|
||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 25.03.2019, 20:43 [ТС] | |
|
shmkv, с чего начать учить-то этот асинхронный ввод-вывод ? Как я думаю не лучший вариант начинать сразу с boost::asio,я хочу понять как работает отдельно асинхронность и как работает тред пул,так с чего начать?
0
|
|
|
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
|
|||
| 25.03.2019, 20:59 | |||
|
0
|
|||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|||
| 25.03.2019, 21:25 [ТС] | |||
|
shmkv, вот допустим нашел статью о асинхронности
Кликните здесь для просмотра всего текста
,в ней описаны насколько я понял два ее варианта (сопрограммы и callback-функции),это так или нет? ![]() Добавлено через 2 минуты shmkv, а вот пару таких статей очень даже помогли бы в понимании всего процесса Добавлено через 12 минут eva2326, вот прочитал я про асинхронность одну и вторую,сколько я понял та которую мне Вы описывали это многопоточная,верно? А та которая есть в статье выше
0
|
|||
|
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
|
|
| 25.03.2019, 21:34 | |
|
ReYalp, если хочется хардкора, то гугли про iocp: примеров и статей хватает.
0
|
|
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 25.03.2019, 21:43 [ТС] | |
|
shmkv, мне кажется Вы не поняли что я хочу, я не хочу пока что учить как все устроено на низком уровне, мне просто достаточно будет пару примеров с обычными методами, к примеру как это описано в статье
Добавлено через 1 минуту shmkv, просто если Вы имели дело с асинхронностью то Вы просто могли бы ответить на пару моих вопросов связанных с ней и всё
0
|
|
|
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
|
|
| 25.03.2019, 21:49 | |
|
0
|
|
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 25.03.2019, 21:59 [ТС] | |
|
shmkv, так вот, как я и спрашивал выше о той статье, автор описывает два вида асинхронностей, но у него нету даже пула ьредов и прочего того что было в примере от eva2326 который был выше, она в своём примере создаёт пул тредов, а значит это уже многопоточность, верно? А автор статьи не создаёт Ани пкл тредов, Ани отдельного потока, значит это однопоточность, я правильно понимаю? Это два примера однопоточной и многопоточный асинхронности?
Добавлено через 4 минуты shmkv, конкретный вопрос был выше, там где я ссылку на статью добавил
0
|
|
| 25.03.2019, 21:59 | |
|
Асинхронность?
Что такое потоки ввода, потоки вывода? Асинхронность и цикл Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе.
Самым главным критерием для меня было создание паролей, в котором отсутствуют знаки: | 1 l I
Обработка содержит реквизиты:
-. . .
|
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store.
И так:
1. Скачиваем с. . .
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге).
Задача:
Программно добавить префикс в нумерацию документов.
Решение:
В модуле объекта. . .
|
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
|
|
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него.
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952
Инструкция внутри.
https:/ / youtu. be/ VpfFZSUDGnQ. . .
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|