Multithreading zlib:如何锁定文件?

Multithreading zlib:如何锁定文件?,multithreading,zlib,Multithreading,Zlib,我需要在多个线程中读取一个文件,并且我需要确保一次只有一个线程读取该文件。对于非压缩文件,我使用 void Process_File(FILE* Input_File) { flockfile(Input_File); ....Do stuff funlockfile(Input_File); } 有没有办法在zlib中锁定文件。i、 e.如果Input_File的类型为gzFile如何锁定它。我目前的想法是像往常一样打开文件,并在zlib例程中锁定它。这是否可以确保该

我需要在多个线程中读取一个文件,并且我需要确保一次只有一个线程读取该文件。对于非压缩文件,我使用

void Process_File(FILE* Input_File)
{
    flockfile(Input_File);
    ....Do stuff
    funlockfile(Input_File);
}

有没有办法在zlib中锁定文件。i、 e.如果
Input_File
的类型为
gzFile
如何锁定它。我目前的想法是像往常一样打开文件,并在zlib例程中锁定它。这是否可以确保该文件将被锁定,以便其他线程使用zlib读取

如果没有人写入文件,则无需锁定文件。多个线程可以同时读取同一个文件,而不会出现任何问题。(请确保在每个线程中分别打开该文件——即,不要试图在多个线程之间共享单个文件句柄指针)@JeremyFriesner:谢谢您的提示!我需要从文件中读取4个连续的行。因此,我需要确保其他线程在此期间不会访问该文件。当前位置状态与文件句柄一起存储,而不是与文件本身一起存储。因此,线程A从文件中读取不会以任何方式影响线程B,因为它们有单独的文件句柄,因此有单独的当前位置变量。