Истинный бездиочный асинхронный файл io в C ++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Истинный бездиочный асинхронный файл io в C ++

Сообщение Anonymous »

Как проверить, действительно ли Boost.asio на самом деле использует Windows, перекрытый ввод-вывод для операций с файлами? /> фон < /h2>
У меня есть критическое приложение, которое обрабатывает большие объемы сжатых файлов (.gz → .csv → Split → .gz). Первоначальное профилирование показывает ввод-ввод файла в качестве узкого места, поэтому мне нужны истинные асинхрологические ввод-ввод на уровне ОС без дополнительных накладных расходов.

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

#include 
#include 

boost::asio::io_context io_context;
boost::asio::windows::random_access_handle file(io_context);

// Open file with FILE_FLAG_OVERLAPPED
HANDLE h = CreateFileA("test.txt", GENERIC_READ, FILE_SHARE_READ,
nullptr, OPEN_EXISTING,
FILE_FLAG_OVERLAPPED | FILE_ATTRIBUTE_NORMAL, nullptr);
file.assign(h);

// Async read
std::vector buffer(8192);
file.async_read_some_at(0, boost::asio::buffer(buffer),
[](boost::system::error_code ec, std::size_t bytes_read) {
// Handle completion
});

io_context.run();
Конкретные технические вопросы

[*] boost :: asio :: windows :: random_access_handle на самом деле вызовет readfileex () или readfile () с внутренними структурами? /> do boost.afio и llfio также используют Windows, перекрытые ввод/вывода, или они используют различные механизмы асинхронности? В очереди в пуле потоков?

[*] Есть ли какие -либо флаги компиляции или проверки времени выполнения, чтобы подтвердить, что эти библиотеки используют асинхронизированные файлы Windows? />
  • Проверенная документация boost.asio, boost.afio и llfio (неясно о внутренней сведениях о реализации)
  • Используемый процесс монитора для наблюдения за файлом I/O (неубедительно на перекрывании VS Leaded I/O)

    /> Профилирован визуальной студией (показывает асинхродическое поведение, но не может подтвердить, если он перекрыт ввод/выводы)
  • исследовал некоторые исходные код, но слои абстракции затрудняют отслеживание на фактические вызовы Windows

    /> среда < /h2>

    Windows 11 < /p>
    < /li>
    Visual Studio 2022 < /p>
    < /li>
    boost 1.82 < /p>
    < /li>
    . File_flag_overlapped
Основная проблема-это различающая>

Подробнее здесь: https://stackoverflow.com/questions/797 ... le-io-in-c
Ответить

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

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

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

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

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