Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/55: Рейтинг темы: голосов - 55, средняя оценка - 4.78
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484

Потоки и асинхронность

25.03.2019, 11:47. Показов 12634. Ответов 100

Студворк — интернет-сервис помощи студентам
Если есть сервер то для каждого клиента было бы логично создавать отдельный поток,но проблема в том что это очень ресурснозатратно,каким образом сделать чтобы не создавать много потоков?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.03.2019, 11:47
Ответы с готовыми решениями:

Потоки. Асинхронность
Уважаемые специалисты, помогите пожалуйста с определениями, прошу не давать ссылки на msdn, потому что уже все там перечитал, но вникнуть...

Потоки и асинхронность для бота в телеграмме
Здравствуйте! В двух словах, что делаю: пишу бота, играющего в города для telegram. Но вот проблема: все пользователи, пишущие боту,...

Асинхронность
Добрый день, у меня такая проблема. Создал поток, запустил его и программа заглючивает, но действие выполняет. Дело в том что сама...

100
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
25.03.2019, 14:01
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от eva2326 Посмотреть сообщение
Что за бред?
Думаю автор цитируемого высказывания просто не правильно выразился, похоже имелось в виду, что некая task'а сохраняет свой state и управление передается другой task'е.
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
25.03.2019, 14:05
Цитата Сообщение от ReYalp Посмотреть сообщение
Azazel-San, а асинхронный многопоточный как выглядит?
Я думаю eva2326, лучше меня вам это расскажет
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
25.03.2019, 14:10  [ТС]
Azazel-San, просто удивительно когда спрашиваешь что-то на форуме, один пишет одно, другой другое и в итоге не понимаешь кого слушать, а спросить у кого-то другого по сути нету, а с тех кто отвечал кто прав не знаешь, так что может Вы мне поможете все таки?
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
25.03.2019, 14:44
Цитата Сообщение от ReYalp Посмотреть сообщение
Azazel-San, просто удивительно когда спрашиваешь что-то на форуме, один пишет одно, другой другое и в итоге не понимаешь кого слушать, а спросить у кого-то другого по сути нету, а с тех кто отвечал кто прав не знаешь, так что может Вы мне поможете все таки?
Ну, тогда, наверное, стоит рассматривать это вместе с Thread pool.
И так что же такое тред-пул?
У нас есть некая очередь из task'ов или же заданий, так же у нас есть собсна сам тред-пул и на выходе мы имеем некие назовем их завершенные task'и.
Что же такое:
очередь task'ов - здесь хранится какая-то работа, которая должна быть выполнена;
тред-пул - это набор потоков (или работяг?) которые постоянно берут работу из очереди и выполняют ее;
завершенные task'и - когда работяга (поток) завершил свою работу мы возвращаем "что-то", что бы сообщить что работа была выполнена.
Асинхронность здесь будет проявлятся в том что мы дадим работу работягам (примечание: одна и та же работа может выполнятся не одним работником (потоком), а несколькими), они ее будут делать, а когда закончат придут за деньгами сообщат об этом нам, в то же время мы могли заниматся своимы делами, после выполения своей работы работяги могут отправится ждать следующей таски (т.е. здесь мы повторно их используем).
0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
25.03.2019, 14:46
Цитата Сообщение от ReYalp Посмотреть сообщение
eva2326, а что тогда такое асинхронности?
"Концепция программирования заключается в том,
что результат выполнения функции доступен не сразу же, а
через некоторое время в виде некоторого асинхронного (нарушающего обычный порядок выполнения) вызова".
(ц) Хабр.
"Ассинхронный дизайн" - способ программирования,
при котором неблокирующий вызов функции приводит к выполнению некоторой задачи в фоновом режиме.
Когда задача выполнена, пользовательское приложение уведомляется об этом при помощи сигнала (коллбека, etc).

Ассинхронный дизайн реализуется средствами многопоточной среды.
(и невозможен в однопоточном режиме).

В однопоточных средах можно реализовать лишь некоторое подобее ансинхронного дизайна
за счет последовательного вызова множества быстрых (коротеньких) функций,
с ручными проверками их состояний.

Вам сейчас не нужно вникать в эти дебри.
Разберитесь сначала с тем, что такое "многопоточность".
И каковы базовые принципы работы тред-пулов.

Цитата Сообщение от Azazel-San Посмотреть сообщение
Асинхронный однопоточный режим не так выглядит?
"Асинхронный однопоточный режим" не существует не имеет никакого отношение к этому бреду:

Цитата Сообщение от Azazel-San Посмотреть сообщение
мы можем заставить поток который уже начал выполнение какой-то n-задачи приостановить свое выполнение
"Вы" - это кто?
На каком таком основании вы вздумали тормозить исполнение задачи?
И как вы вообще себе это представляете?

Особенно бредово это звучит в качестве ответа на такой вопрос:
Цитата Сообщение от ReYalp Посмотреть сообщение
НО вопрос в том что если эти 10 клиентов будут долго отправлять запросы на сервер то другие будут ждать и как мне кажется это не очень правильно
Правильный ответ: да, будут ждать.
Сервер не резиновый.
Если он физически не справляется с нагрузкой, то ничего вы с этим уже не сделаете.


Кликните здесь для просмотра всего текста
В реальности докупают более мощное железо.

И когда я пишу "докупают", то имею ввиду - ставят рядышком ещё один компьютер.

Используются так называемые "балансировщики нагрузки".
В упрощенном виде архитектура выглядит:

Code
1
2
3
4
5
6
7
8
9
10
11
 клиент1    клиент2
    |          |
    +----+-----+
         |
         |
    балансировщик
         |       
         |
   +-----+-----+
   |           |
сервер1     сервер2
Клиенты соединяются с балансировщиком,
который распределяет нагрузку между множеством серверов.
Он определяет, кто из серверов самый свободный,
и напрявляет клиента к нему.

Такая архитектура позволяет легко увеличивать мощности за счет увеличения количества компьютеров.

"Клиент-серверная архитектура" - тема не для новичка.
Вы с потоками сначала разберитесь.


Добавлено через 44 секунды
Цитата Сообщение от Kastaneda Посмотреть сообщение
Думаю автор цитируемого высказывания просто не правильно выразился, похоже имелось в виду, что некая task'а сохраняет свой state и управление передается другой task'е.
Так никто не делает.
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
25.03.2019, 14:55
Цитата Сообщение от eva2326 Посмотреть сообщение
"Ассинхронный дизайн" - способ программирования,
при котором неблокирующий вызов функции приводит к выполнению некоторой задачи в фоновом режиме.
Нет
Цитата Сообщение от eva2326 Посмотреть сообщение
Ассинхронный дизайн реализуется средствами многопоточной среды.
Ты путаешь асинхронность и параллельность

Цитата Сообщение от eva2326 Посмотреть сообщение
(и невозможен в однопоточном режиме).
В однопоточных средах можно реализовать лишь некоторое подобее ансинхронного дизайна
читай выше

Цитата Сообщение от eva2326 Посмотреть сообщение
"Асинхронный однопоточный режим" не существует не имеет никакого отношение к этому бреду
В этой теме уже упомянули boost::asio, вот готовый пример однопоточной асинхронности.

Цитата Сообщение от eva2326 Посмотреть сообщение
Правильный ответ: да, будут ждать.
В boost::asio же не ждут


К чему это я все - асинхронность != параллельность. Есть много языков программирования, которые умеют в асинхронность, но не умеют в параллельность и на них пишут в том числе и серверный бэкенд.

Добавлено через 48 секунд
Вот же цитата с хабра
Цитата Сообщение от eva2326 Посмотреть сообщение
"Концепция программирования заключается в том,
что результат выполнения функции доступен не сразу же, а
через некоторое время в виде некоторого асинхронного (нарушающего обычный порядок выполнения) вызова".
(ц) Хабр.
довольно точно описывает что такое асинхронность.
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
25.03.2019, 15:09
Цитата Сообщение от eva2326 Посмотреть сообщение
И как вы вообще себе это представляете?
Корутины?
0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
25.03.2019, 15:10
Цитата Сообщение от Kastaneda Посмотреть сообщение
Нет
Да

Цитата Сообщение от Kastaneda Посмотреть сообщение
Ты путаешь асинхронность и параллельность
Я ничего не путаю

Цитата Сообщение от Kastaneda Посмотреть сообщение
читай выше
Сам читай.

Цитата Сообщение от Kastaneda Посмотреть сообщение
В этой теме уже упомянули boost::asio, вот готовый пример однопоточной асинхронности.
Так приведите этот готовый пример.
Что-то я не видела здесь выдержек кода.
Именно для условий single-thread.

Потому что, если вдруг окажется, что в single-thread нужно вручную пинать какие нибудь эвент-луп,
тогда никакой это не асинхронный дизайн:
Цитата Сообщение от eva2326 Посмотреть сообщение
В однопоточных средах можно реализовать лишь некоторое подобее ансинхронного дизайна
за счет последовательного вызова множества быстрых (коротеньких) функций,
с ручными проверками их состояний.

Цитата Сообщение от Kastaneda Посмотреть сообщение
В boost::asio же не ждут
У вас машинка физически не способна обработать колоссальное количество запросов.
Всерьёз думаете, что ася вам чем то поможет?

Цитата Сообщение от Kastaneda Посмотреть сообщение
довольно точно описывает что такое асинхронность.
Судя по всему, вам не очевидно, почему это не возможно в single-thread?

Как вообще вы себе представляете неблокирующий вызов в single-thread?

Добавлено через 38 секунд
Цитата Сообщение от Azazel-San Посмотреть сообщение
Корутины?
И как они помогут вам реализовать пул задач?

К тому же, yield запустить может только сама задача.
А не какие то непонятные "вы"
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
25.03.2019, 15:14
Цитата Сообщение от eva2326 Посмотреть сообщение
И как они помогут вам реализовать пул задач?
Причем тут пул задач, мы же об асинхронности в однопотоке говорили?
Ну, допустим неким оператором asynс мы вызвали функцию (впервые), затем мы прервем ее выполнение, вместо ожидания, например, файла, а все последующие вызовы await будут не запускать функцию заново, а продолжать её исполнение в точке предыдущего прерывания?
0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
25.03.2019, 15:19
Цитата Сообщение от Azazel-San Посмотреть сообщение
затем мы прервем ее
"Мы" - это кто?

Cледующая задача управляет ядерной боеголовкой выводит текст в консоль:

C++
1
2
3
4
5
void print()
{
    for(const auto& el: getData())
        std::cout << el << '\n';
}
Покажите, как именно вы собрались прерывать задачу.
Заодно скажите - на каком основании?

Цитата Сообщение от Azazel-San Посмотреть сообщение
а все последующие вызовы await будут не запускать функцию заново, а продолжать её исполнение в точке предыдущего прерывания?
Покажите пример.
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
25.03.2019, 15:34
Цитата Сообщение от eva2326 Посмотреть сообщение
Как вообще вы себе представляете неблокирующий вызов в single-thread?
А при чем тут не блокирующий? Мне кажется вы говорите про синхронный дизайн в многопоточной среде, а не про Асинхронный.

Ну и собственно первая же ссылка в гугле https://stackoverflow.com/ques... k-protocol которая ничего не объясняет, но хотя бы намекает, что я говорю не совсем не правду.
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
25.03.2019, 15:34
Цитата Сообщение от eva2326 Посмотреть сообщение
"Мы" - это кто?
Функция.
Цитата Сообщение от eva2326 Посмотреть сообщение
Покажите, как именно вы собрались прерывать задачу.
yield
Цитата Сообщение от eva2326 Посмотреть сообщение
Заодно скажите - на каком основании?
Раз она выводит только текст, то может и не надо этого делать?
Я же говорил если мы ждем, например, БД или файл почему бы тогда не прервать выполнение (в теории)?
Цитата Сообщение от eva2326 Посмотреть сообщение
Покажите пример.
С++20 еще не вышел официально и примеров мало (я не смотрел подробно)
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
25.03.2019, 15:38
Цитата Сообщение от eva2326 Посмотреть сообщение
У вас машинка физически не способна обработать колоссальное количество запросов.
Да, и многопоточность эту проблему не решает. После некоторого кол-ва открытых сокетов по-любому начинаются проблемы.
Цитата Сообщение от eva2326 Посмотреть сообщение
Всерьёз думаете, что ася вам чем то поможет?
Помогает, на одном потоке держит тысячи клиентов. Можно, конечно, самому написать то же самое, но зачем, если есть готовая boost::asio.
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
25.03.2019, 15:44  [ТС]
Kastaneda, то как в итоге работает асинхронность ? Потоки идут параллельно ,или это один поток в котором функции просто выполняются по очереди (от одной к другой по мере надобности)? И еще если не сложно то хотя бы какой-то пример асинхронной однопоточной программы

Добавлено через 16 секунд
Kastaneda, желательно не очень сложный
0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
25.03.2019, 15:48
Цитата Сообщение от Azazel-San Посмотреть сообщение
Функция.
Цитата Сообщение от Azazel-San Посмотреть сообщение
yield
Вы старт-топик читали?
Как yield вам поможет обработать 100500 клиентов?

Цитата Сообщение от Azazel-San Посмотреть сообщение
Я же говорил если мы ждем, например, БД или файл почему бы тогда не прервать выполнение?
И? как вы это себе представляете?


Есть множество клиентов, каждый хочет получить ответ от БД.
А теперь заново прочтите старт-топик.

Цитата Сообщение от Azazel-San Посмотреть сообщение
С++20 еще не вышел официально
Опишите в псевдокоде.
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
25.03.2019, 15:55
Цитата Сообщение от ReYalp Посмотреть сообщение
И еще если не сложно то хотя бы какой-то пример асинхронной однопоточной программы
Допустим есть очередь задач, задачи плодят (добавляют в очередь) другие задачи, ответы на свои (условные) запросы они получают асинхронно, когда до нужной задачи дойдет очередь и она исполнится. Схематически это может выглядеть так
C++
1
2
3
4
while (true) {
    auto task = task_queue.pop();
    task.execute();
}
Весь жизненный цикл программы состоит из выполнения задач (тасок), когда-нибудь кто-нибудь запосит таску (добавит в очередь задачу), которая сделает exit и программа завершится.

Именно этот подход (я конечно показал его очень упрощено) и есть асинхронность в однопоточной среде. Например весь проект chromium на этом построен, там конечно все сложнее, плюс есть еше потоки, процессы и всякие политики потоков/процессов, но глубоко в кишках там точно такой же цикл который делает то же самое. И весь хромиум может работать на одном потоке, просто медленно, но асинхронно, поэтому там много потоков.
0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
25.03.2019, 16:13
Цитата Сообщение от Kastaneda Посмотреть сообщение
А при чем тут не блокирующий?
При том, что асинхронный вызов не блокирующий.

В этом же и заключается суть асинхронного дизайна:
вы инициируете какую либо процедуру,
и спокойно продолжаете дальше делать свои дела.
когда ваша процедура будет выполнена - вам сообщат.

Цитата Сообщение от Kastaneda Посмотреть сообщение
Мне кажется вы говорите про синхронный дизайн в многопоточной среде, а не про Асинхронный.
Асинхронный дизайн реализуется посредством синхронных вызовов в многопоточной среде
Реализовать его как то ещё иначе - невозможно.

Удивляют люди, которые думают: ну ведь у меня же однопоточное приложение,
но ася же мне позволяет работать асинхронно!

Как будто бы у аси под капотом эльфийское волшебство,
а не та же самая многопоточка.

Цитата Сообщение от Kastaneda Посмотреть сообщение
которая ничего не объясняет
Тогда я даже смотреть на неё не буду)))

Цитата Сообщение от Kastaneda Посмотреть сообщение
Помогает, на одном потоке держит тысячи клиентов.
А если я в коллбеке вечный sleep поставлю?
Она все равно сможет обрабатывать тысячи клиентов?

А то вдруг сейчас окажется, что никакая ася не волшебница,
и вообще, posix с его epoll и сокетами вообще ортогонально данной теме.

Добавлено через 1 минуту
Цитата Сообщение от Kastaneda Посмотреть сообщение
ответы на свои (условные) запросы они получают асинхронно,

Цитата Сообщение от Kastaneda Посмотреть сообщение
Именно этот подход (я конечно показал его очень упрощено) и есть асинхронность в однопоточной среде.
Это уже не однопоточная среда.
Или что за волшебство позволяет получать ответы асинхронно в однопоточной среде?
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
25.03.2019, 16:18  [ТС]
Kastaneda, окей,а теперь на конкретном примере можно? Как это реализовать на сервере,есть самый простой сервер :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include "pch.h"
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include <winsock2.h>
#include <Windows.h>
#pragma comment (lib, "ws2_32.lib")
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
 
int main()
{
    WSADATA WsaData;
    int err = WSAStartup(0x0101, &WsaData);
    if (err == SOCKET_ERROR)
    {
        printf("WSAStartup() failed: %ld\n", GetLastError());
        return 1;
    }
    SOCKET s;
    s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if ((s = socket(AF_INET, SOCK_STREAM, 0)) == 0)
    {
        perror("socket failed");
        exit(EXIT_FAILURE);
    }
    SOCKADDR_IN sin;
    sin.sin_family = AF_INET;
    sin.sin_port = htons(80);
    sin.sin_addr.s_addr = INADDR_ANY;
    bind(s, (LPSOCKADDR)&sin, sizeof(sin));
    listen(s, SOMAXCONN);
    SOCKET s1;
    SOCKADDR_IN from;
    int fromlen = sizeof(from);
    cout << "Ok" << endl;
    s1 = accept(s, (sockaddr*)&from, &fromlen);
    printf("accepted connection from %s, port %d\n", inet_ntoa(from.sin_addr), htons(from.sin_port));
    char * RecvBuffer  = new char;
    char SendBuffer[] = "Hello World!";
    ofstream file("file.txt", ios::out);
    recv(s1, RecvBuffer, 1024, 0);
    send(s1, &SendBuffer[0], strlen(SendBuffer),0);
    closesocket(s);
    closesocket(s1);
}
как сделать так чтобы после подключения нового клиента(accept() > 0),с сервера могли постоянно отправяться сообщения и так же приниматься от клиента,чтобы это все делалось до тех пор пока не клиент не отключиться?

Добавлено через 2 минуты
eva2326, или может Вы поможете

Добавлено через 1 минуту
eva2326,
Цитата Сообщение от eva2326 Посмотреть сообщение
Асинхронный дизайн реализуется посредством синхронных вызовов в многопоточной среде
это же не то же самое что я просто пока выполняется метод accept() буду создавать отдельный поток для каждого клиента и там обрабатывать его запросы пока он не отключится?
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
25.03.2019, 16:36

Не по теме:


Все это оффтоп, к задачи ТСа не имеет отношения вовсе или только косвенное.

Цитата Сообщение от eva2326 Посмотреть сообщение
Вы старт-топик читали?
Как yield вам поможет обработать 100500 клиентов?
Никак.
Цитата Сообщение от eva2326 Посмотреть сообщение
И? как вы это себе представляете?
Сложновато.
Цитата Сообщение от eva2326 Посмотреть сообщение
Есть множество клиентов, каждый хочет получить ответ от БД.
БД - я навел только для примера.
Цитата Сообщение от eva2326 Посмотреть сообщение
А теперь заново прочтите старт-топик.
Прочитал.
Цитата Сообщение от eva2326 Посмотреть сообщение
Опишите в псевдокоде.
Сложно, это тянет на целый проект.
Все что в голове крутится, не тянет на асинхронность ну допустим, ожидание на какое-то событие, событием может быть что угодно, то же ожидание файла, да проблему ТС'a это не решает и оно синхронное, но раз уж че-то писал, то просто оставлю здесь.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
bool event_happened{false};
 
void on_event(){
    eventHappened = true;
}
 
func wait_for_event() {
    yield return wait_until(event_happened);
    eventHappened = false;
}
 
// останавливается и ждет где-то в его исполнении
func main() {
   // ...
   yield return start_coroutine(wait_for_event());
   // ...
}
Или можно было бы делать спин-лок



Не по теме:


Да ну, неужели нельзя прервать работу таски/функции которая ждет на что-то долго и пока она ждет, заняться более полезной работой, а потом вернуться к ее исполнению и продолжить?
Окей, может корутины здесь и не подходят или я просто не знаю как это сделать, но это не значит же что это не возможно.

0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
25.03.2019, 17:05
Цитата Сообщение от eva2326 Посмотреть сообщение
Это уже не однопоточная среда.
Где у меня в коде создание потоков?

Цитата Сообщение от eva2326 Посмотреть сообщение
Или что за волшебство позволяет получать ответы асинхронно в однопоточной среде?
Задача создает другую задачу, которая называется "дай мне список файлов на диске, ответ отдаешь через этот калбек", добавляет эту задачу в очередь, сама прекращает выполнятся. Когда-нибудь очередь доходит до этой новой задачи, она получается список файлов на диске, создает новую задачу "позвать калбек вот с этими аргументами" и добавляет ее в очередь. Первая задача наконец-то получает свой список файлов асинхронно.

Еще раз - вы путаете асинхронность и параллелизм.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.03.2019, 17:05

Асинхронность?
Уже как то создавал подобную тему, но моя текущая реализация меня не устраивает чуть более чем полностью, создам новую. Есть у меня некая...

Асинхронность
Всем привет) Я новичек в ноде, разрабатываю веб сервер. this.tokens.get(token, function(msg, that) { if (msg) { ...

Асинхронность в js
почему в консоле не находит переменную obj, но когда убираю setTimout, только тогда находит async function regUser() { ...

Что такое потоки ввода, потоки вывода?
Здарова всем! Не так давно уже прогаю на С++ и все НИКАК не могу понять, что такое потоки ввода, потоки вывода..! вот допустим...

Асинхронность и цикл
Здравствуйте! Не могу понять как правильно сделать перебор всех страниц сайта и у каждой странице сделать свою выборку?Чет я...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. Сразу отвечу: А в PvP с ним. . .
Особенности 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,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru