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

时间:2014-12-01 19:15:10

标签: c multithreading file-handling

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

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

我知道我可以遍历字节并进入我想要的部分,但我想要更快的方式。有没有?

1 个答案:

答案 0 :(得分:0)

如果每个线程都有自己的文件描述符,则可以正常方式使用lseek()。如果你试图共享一个文件描述符,你需要处理一个线程的lseek()和另一个的read()之间的比赛。 - Arlie Stephens

更好 - 如果你的操作系统有它,使用pread()或preadv(),它们组合lseek()和read / v /(),而不更改文件指针。 - Arlie Stephens