2010-06-30 3 views
0

Quelque chose ne va pas avec ceci en général?Pourquoi ce thread ne lit-il pas systématiquement toutes les données du tube?

CallingFunction() 
{ 
    CreatePipe() 
    CreateMutex() 
    CreateThread(ThreadFunction) 

    while(there is data left to send) 
    { 
     WriteFile(send data in 256 byte chunks) 
    } 

    WaitForSingleobject() //don't return until ReadThread is done 

    return 0; 
} 

ThreadFunction() 
{ 
    WaitForSinglObject() 

    while(bytesRead != totalBytestoReadFileSize) 
    { 
     ReadfromPipe(in chunks) 
     update bytesRead++ 
    } 

    ReleaseMutex() 

    return 0; 
} 

Avant la fonction appelante se termine -

FileSize: 232016
BytesWrittenToPipe: 232016
BytesReadFromPipe: 231946 ou 232012 ou 231840 -> Pourquoi ne correspond pas?

Répondre

1

S'attendre à ce que nous débugitions un tel problème à partir d'un pseudo-code n'est pas réaliste. Utilisez FlushFileBuffers pour vous assurer que toutes les données du canal sont écrites.