_nolock CRT-функции - PullRequest
       23

_nolock CRT-функции

2 голосов
/ 23 декабря 2008

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

Не могли бы вы указать мне некоторую подробную информацию об этих функциях? Спасибо: -)

Ответы [ 2 ]

1 голос
/ 23 декабря 2008

Вам необходимо заблокировать доступ к файлу, если вы обращаетесь к нему из нескольких потоков. В противном случае один поток может написать прямо посередине другого. Попробуйте их, напечатав в stdio, чтобы увидеть эффекты.

0 голосов
/ 23 декабря 2008

Если вы перейдете по ссылкам на отдельные функции, вы увидите следующую строку:

Используйте эту функцию только в поточно-ориентированном режиме. такие контексты, как однопоточные приложения или где звонит область уже обрабатывает поток изоляция.

Единственный способ оценить разницу в производительности - создать небольшую программу и протестировать ее. Как указал monjardin, вам нужно заблокировать доступ к файлу, к которому вы обращаетесь, с помощью функции (если, как указано в документации, вы не находитесь в однопоточном окружении).

...