Ответ от Kaylum: Если потоки используют один и тот же дескриптор файла, то, если какой-либо поток выполняет чтение, он сместит смещение файла для всех потоков. Следовательно, когда другой поток выполняет чтение, оно не будет таким же, как чтение первого потока, а скорее продолжится с того места, где первый поток прекратил чтение.
Таким образом, они получают доступ к одной и той же записи в файловой таблице всей системы, но поскольку каждый поток изменяет смещение файла для всех потоков, они не читают одну и ту же часть файла.