Я недавно обнаружил существование _nolock функции, и меня удивляет, как мало информации я могу найти по ним. В нем говорится, что это увеличивает производительность, но я не могу найти никаких тестов. Он также говорит, что они могут использоваться в многопоточной программе, если программа выполняет свою собственную блокировку, но что должно быть заблокировано? Должны ли все вызовы CRT проходить одну и ту же блокировку? По одному на функцию? По одному на группу функций? Если да, то что определяет группы?
Не могли бы вы указать мне более подробную информацию об этих функциях? Спасибо :-)





Вам необходимо заблокировать доступ к файлу, если вы обращаетесь к нему из нескольких потоков. В противном случае один поток мог бы писать прямо в середине другого. Попробуйте их, распечатав в stdio, чтобы увидеть эффекты.
Если вы перейдете по ссылкам на отдельные функции, вы увидите следующую строку:
Use this function only in thread-safe contexts such as single-threaded applications or where the calling scope already handles thread isolation.
Единственный способ измерить разницу в производительности - создать небольшую программу и протестировать ее. Как указал Монжардин, вам необходимо заблокировать доступ к файлу, к которому вы обращаетесь с помощью функции (если, как указано в документации, вы не находитесь в однопоточной среде).