Processa o mesmo arquivo em dois threads usando ifstream

Tenho um arquivo de entrada no meu aplicativo que contém uma grande quantidade de informações. A leitura sequencial e apenas um deslocamento de arquivo por vez não é suficiente para o uso do meu aplicativo. Idealmente, eu gostaria de ter dois threads, que têm @ separados e distintifstreams lendo dois deslocamentos de arquivo exclusivos do mesmo arquivo. Eu não posso simplesmente começar umifstream, e faça uma cópia usando o construtor de cópias (uma vez que não pode ser copiado).Então, como faço para lidar com isso?

Imediatamente consigo pensar em duas maneiras,

Construa um novoifstream para o segundo segmento, abra-o no mesmo arquivShare uma única instância de umifstream nos dois segmentos (usando, por exemplo,boost::shared_ptr<>). Procure o deslocamento de arquivo apropriado no qual o encadeamento atual está interessado no momento, quando o encadeamento receber uma fatia de tempo.

Um desses dois métodos é preferido?

Existe uma terceira (ou quarta) opção em que ainda não pense

Obviamente, em última análise, estou limitado pelo fato de o disco rígido ter que girar para frente e para trás, mas o que estou interessado em tirar proveito (se possível) é de algum cache de disco no nível do SO em ambos os deslocamentos de arquivo simultaneament

Obrigado

questionAnswers(5)

yourAnswerToTheQuestion