Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Locks a FILE object to ensure consistency for threads accessing the FILE object concurrently.
void _lock_file(
   FILE* file
);
Parameters
- file
 File handle.
Remarks
The _lock_file function locks the FILE object specified by file. The underlying file is not locked by _lock_file. Use _unlock_file to release the lock on the file. Calls to _lock_file and _unlock_file must be matched in a thread.
Requirements
| Routine | Required header | 
|---|---|
| _lock_file | <stdio.h> | 
For more compatibility information, see Compatibility in the Introduction.
Example
// 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 );
}
... First Second First Second Third Second Third Second ... FSiercsotn dF iSrescto nFdi rSsetc oFnidr sSte cFoinrds tS eFciornsdt
.NET Framework Equivalent
See Also
Reference
Change History
| Date | History | Reason | 
|---|---|---|
| March 2009 | Reworked. | Customer feedback. |