Какой метод имеет самую низкую задержку для отправки данных UDP по потокам, test_send_asyncor test_send_coro? Или есть другие хорошие подходы? При создании/уничтожении стеков с коратиками могут быть узкие места производительности?#include
#include
using namespace asio;
using namespace asio::ip;
io_context g_ctx;
void test_send_async(udp::socket& sock)
{
printf("test_send_async\n");
g_ctx.post([&sock]()
{
udp::endpoint addr(address_v4::from_string("1.1.1.1"), 123);
sock.async_send_to(buffer("hello"), addr,
[](const error_code& ec, size_t n)
{
});
});
}
void test_send_coro(udp::socket& sock)
{
printf("test_send_coro\n");
co_spawn(g_ctx, [&sock]() -> awaitable
{
udp::endpoint addr(address_v4::from_string("1.1.1.1"), 123);
auto [ec,n] = co_await sock.async_send_to(buffer("hello"), addr, as_tuple(deferred));
}, detached);
}
auto coro_main() -> awaitable
{
printf("coro_main bedin\n");
steady_timer timer(g_ctx);
while (true)
{
timer.expires_from_now(std::chrono::seconds(1));
co_await timer.async_wait(as_tuple(use_awaitable));
//do something ...
}
}
int main()
{
WSAData data;
WSAStartup(0x0202, &data);
udp::socket sock(g_ctx, udp::v4());
co_spawn(g_ctx, coro_main(), detached);
std::thread th([&sock]()
{
while (true)
{
test_send_async(sock);
test_send_coro(sock);
std::this_thread::sleep_for(std::chrono::seconds(1));
}
});
g_ctx.run();
th.join();
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... ansmission
Async vs. Coroutine: эффективность передачи данных UDP [закрыто] ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1757557213
Anonymous
Какой метод имеет самую низкую задержку для отправки данных UDP по потокам, test_send_asyncor test_send_coro? Или есть другие хорошие подходы? При создании/уничтожении стеков с коратиками могут быть узкие места производительности?#include
#include
using namespace asio;
using namespace asio::ip;
io_context g_ctx;
void test_send_async(udp::socket& sock)
{
printf("test_send_async\n");
g_ctx.post([&sock]()
{
udp::endpoint addr(address_v4::from_string("1.1.1.1"), 123);
sock.async_send_to(buffer("hello"), addr,
[](const error_code& ec, size_t n)
{
});
});
}
void test_send_coro(udp::socket& sock)
{
printf("test_send_coro\n");
co_spawn(g_ctx, [&sock]() -> awaitable
{
udp::endpoint addr(address_v4::from_string("1.1.1.1"), 123);
auto [ec,n] = co_await sock.async_send_to(buffer("hello"), addr, as_tuple(deferred));
}, detached);
}
auto coro_main() -> awaitable
{
printf("coro_main bedin\n");
steady_timer timer(g_ctx);
while (true)
{
timer.expires_from_now(std::chrono::seconds(1));
co_await timer.async_wait(as_tuple(use_awaitable));
//do something ...
}
}
int main()
{
WSAData data;
WSAStartup(0x0202, &data);
udp::socket sock(g_ctx, udp::v4());
co_spawn(g_ctx, coro_main(), detached);
std::thread th([&sock]()
{
while (true)
{
test_send_async(sock);
test_send_coro(sock);
std::this_thread::sleep_for(std::chrono::seconds(1));
}
});
g_ctx.run();
th.join();
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79760732/async-vs-coroutine-efficiency-in-udp-data-transmission[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия