从C中的不同线程读取文件
Reading from a file in different threads in C
我有一个多线程服务器程序,其中每个线程都需要读取文件的内容以检索客户端请求的数据。
我在 C 中使用 pthreads 来完成创建线程并将函数传递给线程将要执行的线程。
在函数中,如果我用fopen()
分配给一个新的FILE
指针,然后用fgets()
读取文件的内容,每个线程是否都有自己的文件偏移量?也就是说,如果线程 1 正在从文件中读取,并且当线程 2 第一次读取时它位于文件的第 5 行,那么线程 2 是从第 5 行开始读取还是独立于线程 1 在文件中的位置?
每次打开FILE
只有一个文件指针。它有一个关联的 FD 和一个文件位置(如您所说的文件偏移量)。
但是您可以 fopen
文件两次(来自两个不同的线程或就此而言来自同一线程)- 正如您现在的编辑所暗示的那样。这意味着您将有两个关联的 FD 和两个单独的文件位置。
IE,这与线程本身无关,只是如果你想要单独的文件位置,你将需要两个 FD,这(使用 stdio)意味着两个 FILE
s。
我有一个多线程服务器程序,其中每个线程都需要读取文件的内容以检索客户端请求的数据。
我在 C 中使用 pthreads 来完成创建线程并将函数传递给线程将要执行的线程。
在函数中,如果我用fopen()
分配给一个新的FILE
指针,然后用fgets()
读取文件的内容,每个线程是否都有自己的文件偏移量?也就是说,如果线程 1 正在从文件中读取,并且当线程 2 第一次读取时它位于文件的第 5 行,那么线程 2 是从第 5 行开始读取还是独立于线程 1 在文件中的位置?
每次打开FILE
只有一个文件指针。它有一个关联的 FD 和一个文件位置(如您所说的文件偏移量)。
但是您可以 fopen
文件两次(来自两个不同的线程或就此而言来自同一线程)- 正如您现在的编辑所暗示的那样。这意味着您将有两个关联的 FD 和两个单独的文件位置。
IE,这与线程本身无关,只是如果你想要单独的文件位置,你将需要两个 FD,这(使用 stdio)意味着两个 FILE
s。