_lock_file

锁定确保同时访问 FILE 对象的线程的一致性的 FILE 对象。

void _lock_file(
   FILE* file
);

参数

  • file
    文件句柄。

备注

FILE 对象由 file指定的 _lock_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 );
}
        

.NET Framework 等效项

系统:: IO:: FileStream:: 锁定

请参见

参考

文件处理

_creat, _wcreat

_open, _wopen

_unlock_file