_lock_file
FILE 개체에 동시에 액세스하는 스레드들로부터 일관성을 보장하기 위해 FILE 개체를 잠급니다.
void _lock_file(
FILE* file
);
매개 변수
- file
파일 처리기입니다.
설명
_lock_file 함수는 file에 의해 지정된 FILE 개체를 잠급니다. 내부 파일은 _lock_file에 의해 잠기지 않습니다. 파일에 대한 잠금을 해제하기 위하여 _unlock_file를 사용합니다. _lock_file 및 _unlock_file의 호출은 반드시 스레드에서 일치해야 합니다.
요구 사항
루틴 |
필수 헤더 |
---|---|
_lock_file |
<stdio.h> |
호환성에 대한 자세한 내용은 소개 단원의 호환성 부분을 참조하십시오.
예제
// crt_lock_file.c
// This example creates multiple threads that write to standard output
// concurrently, first with _file_lock, then without.
#include <stdio.h>
#include <process.h>// _beginthread
#include <windows.h>// HANDLE
void Task_locked( void* str )
{
for( int i=0; i<1000; ++i )
{
_lock_file( stdout );
for( char* cp = (char*)str; *cp; ++cp )
{
_fputc_nolock( *cp, stdout );
}
_unlock_file( stdout );
}
}
void Task_unlocked( void* str )
{
for( int i=0; i<1000; ++i )
{
for( char* cp = (char*)str; *cp; ++cp )
{
fputc( *cp, stdout );
}
}
}
int main()
{
HANDLE h[3];
h[0] = (HANDLE)_beginthread( &Task_locked, 0, "First\n" );
h[1] = (HANDLE)_beginthread( &Task_locked, 0, "Second\n" );
h[2] = (HANDLE)_beginthread( &Task_locked, 0, "Third\n" );
WaitForMultipleObjects( 3, h, true, INFINITE );
h[0] = (HANDLE)_beginthread( &Task_unlocked, 0, "First\n" );
h[1] = (HANDLE)_beginthread( &Task_unlocked, 0, "Second\n" );
h[2] = (HANDLE)_beginthread( &Task_unlocked, 0, "Third\n" );
WaitForMultipleObjects( 3, h, true, INFINITE );
}