Открытый файловый дескриптор и все связанные с ним структуры данных - один для всех потоков. Прочитал байт один поток, и как-бы все прочитали - сдвинулись на байт - следующее чтение у каждого из потоков будет со следующего байта.
Я навскидку даже знаю весьма специфический случай,когда это может быть полезно. Но в 99.9 процентов это ерунда же. Так что каждый поток или должен ставить лок и читать весь файл целиком, или придумывать какую-то хитрую систему координации. Может уже кто и придумал
Короче. Пользуйтесь процессами - хоть тысячи на Линуксе запускайте - это дешево достаточно.
PS Прогуглил маленько - лок не надо ставить на Линуксе, когда поток читает файл целиком - ядро заботится о безопасности. Но все остальное, как я выше написал.
Пользователь решил продолжить мысль 11 Января 2016, 12:14:59:
PSS - Lock то все-равно ставить надо. Это ж каждый процесс должен сначала seek 0, а только потом read - a это уже не атомарно. Короче головняк.
Запускайте новый процесс и открывайте заново.