La respuesta corta: Dado que está escribiendo en un disco Flash, no esperaría que la cantidad de hilos marque la diferencia de una forma u otra. Pero si hiciera una diferencia, esperaría que los subprocesos múltiples fueran más rápidos que un solo subproceso, no más lento.
La respuesta larga:
me escribió un programa similar al que describes hace unos 6 años - se corrió en una tarjeta PowerPC Linux embebido y leyó/escribió varios archivos de audio simultáneas a/desde un disco duro SCSI manejar. Originalmente lo escribí con un solo hilo haciendo I/O, porque pensé que daría el mejor rendimiento, pero resultó que ese no era el caso.
En particular, cuando varios hilos estaban leyendo/escribiendo a la vez, la capa SCSI estaba al tanto de todas las solicitudes pendientes de todos los diferentes hilos y podía reordenar las solicitudes de E/S para buscar el cabezal de la unidad fue minimizado En el escenario de IO de subproceso único, por otro lado, la capa SCSI solo sabía acerca de la única solicitud de E/S pendiente "siguiente" y, por lo tanto, no podía hacer esa optimización. Eso significó un viaje adicional para el cabezal de la unidad en muchos casos, y por lo tanto, un menor rendimiento.
Por supuesto, su aplicación no utiliza SCSI o un disco rotativo con cabezales que necesitan búsqueda, por lo que puede no ser un problema para usted, pero puede haber otras optimizaciones que la capa de sistema de archivos/hardware puede hacer si es consciente de múltiples solicitudes simultáneas de E/S. La única forma real de averiguarlo es probar varios modelos y medir los resultados.
Mi sugerencia sería desacoplar las E/S de disco de su E/S de red moviendo su E/S de disco en un grupo de subprocesos. A continuación, puede variar el tamaño máximo de su grupo de subprocesos de E/S de 1 a N y, para cada tamaño, medir el rendimiento del sistema. Eso le daría una idea clara de lo que funciona mejor en su hardware particular, sin necesidad de reescribir el código más de una vez.
¿Su tarjeta CF tiene memoria Flash real o es microHDD (Microdrive)? – osgx
Es un flash real, pero debido al controlador utilizado, es reconocido como un dispositivo ATA por el sistema operativo. – Nick