Использование scanf() в программах на C++ быстрее, чем использование cin?
Я знаю, что после установки sync_with_stdio( false), cin может читать быстрее. Мой вопрос: почему?
Раньше я думал, что после вызова sync_with_stdio(false) система может создать буфер, чтобы уменьшить время связи со стандартным вводом: когда приходит запрос на чтение, система может прочитайте несколько символов в буфер перед выполнением синтаксического анализа. Однако я понял, что это не так, поскольку cin будет блокировать и ждать, пока клиент введет символы один за другим. Это означает, что независимо от того, вызывается sync_with_stdio(false) или нет, система должна ждать ввода пользователя.
Тогда я подумал, что после вызова sync_with_stdio(false) стандартный ввод может переход от заблокированного чтения к разблокированному чтению. Однако я попытался написать следующий код:
Код: Выделить всё
#include
int main()
{
auto saved_flags = fcntl(STDIN_FILENO, F_GETFL);
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/78718836/what-is-the-magic-behind-sync-with-stdiofalse[/url]