De todos modos, respondiendo a tu pregunta, hay que dividir el problema. Divides el fichero en bloques de un tamaño determinado, y cada hilo se encarga de leer un bloque.
Una cosa, tipicamente creo que fuerza bruta implica que no es diccionario. O usas diccionario o fuerza bruta. Fuerza bruta son todas las posibles combinaciones y diccionario que utilizaras solo las palabras contenidas en un fichero. ¿Estoy equivocado con la acepcion?¿Es correcto decir que usando diccionario se esta usando fuerza bruta?
No obstante relativo a la programacion con hilos, ¿no conoceis los modulos?, con eso no complicas para nada la aplicacion, de hecho creo que simplificas bastante su programación. Lo ideal con hilos y diccionarios es no hacer que el disco vaya de lado a lado y usar lectura con buffer, y asignas a cada hilo el modulo de orden que toque, por ejemplo modulo 4 y haces numeropalabra%4. El 0 lo asignas a uno, el 1 a otro, el 2 a otro y el 3 a otro.
No obstante la solucion sin hilos que comenta raven me parece tambien buena, lo que quiero decir con eso no es que crea que la solucion con hilos sea peor, si no que la opcion con hilos no me parece mala. Mayormente, no veo el problemon que comentan de hacerlo con hilos.
Para saber dónde comienza cada palabra hay que leer el fichero entero.
El problemón es que estás complicando las cosas (mucho o poco, da igual) para nada.
CitarPara saber dónde comienza cada palabra hay que leer el fichero entero.Me parecio que no se hablaba de ningun formato especifico, normalmente el formato pasa por ser simplemente una palabra por linea o con un separador concreto con lo que no hace falta la lectura del fichero entero. No obstante ¿En que formato de archivo hace falta leer el fichero entero de diccionario para poder saber cuando comienza y termina cada palabra?
De hecho, normalmente, la gente suele ver mas sencillo el hacer las cosas multihilo (cuando no hay problemas de seccion critica) que hacerlas mediante bucles porque queda el código más segmentado y legible