Введение в непоточный асинхронный ввод-вывод для C ++? - PullRequest
19 голосов
/ 15 декабря 2011

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

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

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

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

1 Ответ

14 голосов
/ 15 декабря 2011

Повышение асинхронного ввода-вывода (asio) . У них есть отличный учебник и несколько примеров . Это кроссплатформенный.

...