Тупик в среде локального клиента/сервера с 10K -одновременными соединениями TCPC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Тупик в среде локального клиента/сервера с 10K -одновременными соединениями TCP

Сообщение Anonymous »

В этой простой реализации серверный прослушитель coroutine появляется на asio :: io_context , чтобы принять входящие соединения, порождая сеанс на прием.
на то же самое Время 10K -одновременные клиенты устанавливают подключения к серверу.
Сервер записывает 1KB -куски данных каждому клиенту в цикле. устанавливаются, спят в течение некоторого времени, чтобы позволить серверу/клиентам обмениваться данными. , который завершает соединение для клиентов.
Однако всегда есть некоторые соединения, которые не будут закрыты.

Код: Выделить всё

using asio::ip::tcp;
using Executor = asio::io_context::executor_type;
std::atomic_bool stop = false;
std::atomic_int32_t connected = 0;
int numConnections = 10'000;

namespace Client {
asio::awaitable client() try {
const auto ex = co_await asio::this_coro::executor;
tcp::socket socket{ex};
tcp::resolver res{ex};
co_await async_connect(socket, res.resolve("localhost", "12345"), asio::deferred);
++connected;

for (std::vector buf(1024);;)
co_await async_read(socket, asio::mutable_buffer(buf.data(), buf.size()), asio::deferred);

} catch (asio::system_error const &se) {
--connected;
}
}
< /code>
namespace Server {
asio::awaitable session(tcp::socket socket) try {
for (static const std::vector payload(1024, 'A'); !stop;) {
co_await async_write(socket, asio::buffer(payload),
asio::as_tuple(asio::deferred));
}
} catch (asio::system_error &err) {
log() 

Подробнее здесь: [url]https://stackoverflow.com/questions/79451578/deadlock-in-local-client-server-environment-with-10k-concurrent-tcp-connections[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Тупик в среде локального клиента/сервера с 10K -одновременными соединениями TCP
    Anonymous » » в форуме C++
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Тупик сериализации при обновлении в Laravel с одновременными консольными командами
    Anonymous » » в форуме Php
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Тупик сериализации при обновлении в Laravel с одновременными консольными командами
    Anonymous » » в форуме MySql
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Тупик сериализации при обновлении в Laravel с одновременными консольными командами
    Anonymous » » в форуме Php
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Ошибки с соединениями udp-tcp и сюжетом
    Anonymous » » в форуме C#
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»