_nolock CRT функции

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
194
2

Ответы 2

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

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

Use this function only in thread-safe contexts such as single-threaded applications or where the calling scope already handles thread isolation.

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

Другие вопросы по теме