Блокировка, вызываемая getc
, обеспечивает блокировку на уровне приложения объекта stdio FILE, чтобы обеспечить многопоточный доступ к одному и тому же объекту FILE несколькими потоками в одном приложении.Таким образом, нужно будет получать каждый раз, когда читается символ, а не только при пополнении буфера.
Но, если вы не обращаетесь к ФАЙЛУ из нескольких потоков,Вам никогда не придется ждать блокировки.Если накладные расходы на получение / снятие блокировки слишком велики (измерьте это; не просто предполагайте), у вас также есть возможность вручную блокировать / разблокировать, используя flockfile
и funlockfile
, а затем getc_unlocked
. * 1009.*