2014-12-01 61 views
0

说,我有一个包含10个段落的文件。我有10个线程将独立读取这些段落并将数据提供给主线程。C:在多个线程中使用不同文件描述符在不同位置打开文件

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

我知道我可以遍历字节并到达我想要的部分,但我想要一个更快的方法。有没有?

+2

如果每个线程都有自己的文件描述符,则可以以正常方式使用lseek()。如果您试图共享一个文件描述符,则需要处理一个线程的lseek()与另一个线程的read()之间的竞争。 – 2014-12-01 19:17:49

+1

更好 - 如果你的操作系统具有它,使用pread()或preadv(),它结合了lseek()和read/v /(),而不改变文件指针。 – 2014-12-01 19:20:04

+0

明白了,谢谢你们两位! – 2014-12-01 19:24:10

回答

0

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

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