2014-12-01 32 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