C:在多个线程中使用不同的文件描述符在不同位置打开文件

C:在多个线程中使用不同的文件描述符在不同位置打开文件,c,multithreading,file-handling,C,Multithreading,File Handling,比如说,我有一个包含10段的文件。我有10个线程,它们将独立地阅读这些段落,并将数据提供给主线程 如何打开此文件,使我的处理程序正好位于它应该读取的位置。我知道每个段落有多少字节 我知道我可以在字节上循环并到达我想要的部分,但我想要一种更快的方法。是否有?如果每个线程都有自己的文件描述符,则可以按正常方式使用lseek()。如果您试图共享一个文件描述符,则需要处理一个线程的lseek()和另一个线程的read()之间的争用阿莉·斯蒂芬斯 更好-如果您的操作系统有,请使用pread()或pread

比如说,我有一个包含10段的文件。我有10个线程,它们将独立地阅读这些段落,并将数据提供给主线程

如何打开此文件,使我的处理程序正好位于它应该读取的位置。我知道每个段落有多少字节


我知道我可以在字节上循环并到达我想要的部分,但我想要一种更快的方法。是否有?

如果每个线程都有自己的文件描述符,则可以按正常方式使用lseek()。如果您试图共享一个文件描述符,则需要处理一个线程的lseek()和另一个线程的read()之间的争用阿莉·斯蒂芬斯


更好-如果您的操作系统有,请使用pread()或preadv(),它们结合了lseek()和read/v/(),而无需更改文件指针Arlie Stephens

如果每个线程都有自己的文件描述符,则可以按正常方式使用lseek()。如果您试图共享一个文件描述符,则需要处理一个线程的lseek()和另一个线程的read()之间的争用。更好的是,如果您的操作系统有,请使用pread()或preadv(),它们结合了lseek()和read/v/(),而不更改文件指针。明白了,谢谢!正如@Arlie Stephens所说,使用
lseek()
,可能所有线程都在
“r”
读取模式下打开文件,并且不会因为写入文件而使事情复杂化。