Введение в асинхронный ввод-вывод без потоков для C ++?

Я работаю в команде настольных приложений, состоящей из «разработчиков пользовательского интерфейса» (мы) и «C ++». разработчики »(их). Разработчики C ++ несут ответственность за получение всех данных, которые мы отображаем в пользовательском интерфейсе, поэтому они выполняют весь ввод-вывод, доступ к базе данных, веб-вызовы и т. Д.

Недавно мы столкнулись с некоторыми серьезными проблемами производительности, когда ввод-вывод блокировал Поток пользовательского интерфейса. Конечно, решение этой проблемы - сделать ввод-вывод асинхронным.Но разработчики C ++ настаивают, что это возможно только путем создания нового потока, что, как мы знаем, очень дорого.

Я знаю из Node.js и т. Д., Что асинхронный ввод-вывод не требует использования потоков. Я знаю, что Win32 и, предположительно, Mac имеют цикл обработки событий. Но я понятия не имею, какие решения распространены в стране C ++ для выполнения асинхронного непоточного ввода-вывода. (Может быть, та вещь libuv, которая лежит в основе узла?).

Может ли кто-нибудь указать на некоторые популярные библиотеки или, что еще лучше, учебные статьи, чтобы мы могли представить эту концепцию нашим разработчикам C ++? Бонусные баллы за кроссплатформенность (ПК и Mac). Больше бонусов, если есть асинхронное решение для беспоточной базы данных, поскольку я считаю, что использование SQLite является источником многих наших проблем.

19
задан Domenic 15 December 2011 в 15:28
поделиться