Exportar (0) Imprimir
Expandir todo
div
EOF
Expandir Minimizar
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

_lock_file

Bloquea un objeto de FILE para garantizar la coherencia de los subprocesos que tienen acceso a FILE simultáneamente.

void _lock_file(
   FILE* file
);

file

identificador de archivos.

la función de _lock_file bloquea el objeto de FILE especificado por file. El archivo subyacente no está bloqueado por _lock_file. Utilice _unlock_file para liberar el bloqueo en el archivo. las llamadas a _lock_file y _unlock_file se deben coincidir en un subproceso.

rutina

Encabezado necesario

_lock_file

<stdio.h>

Para obtener más información de compatibilidad, vea compatibilidad en la Introducción.

// 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 );
}
...  Primero
Segundo
Primero
Segundo
tercer
Segundo
tercer
Segundo
...  FSiercsotn
dF
iSrescto
nFdi
rSsetc
oFnidr
sSte
cFoinrds
tS
eFciornsdt  

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft