Возможно, вы не хотите использовать несколько потоков. Даже на многоядерном процессоре есть только один путь к диску, поэтому вы, вероятно, не получите выигрыша в производительности (доступ к диску * на 1001 * намного медленнее, чем к памяти).
У вас есть хорошая идея с загрузкой и отображением маленьких битов одновременно. Просто сделай это в одной ветке. Прочитайте примерно первый мегабайт, отобразите его, а затем выполните следующий в фоновом режиме и т. Д.
И вы правы, что вам может понадобиться отдельный поток для GUI. Это одна из причин, почему BeOS была настолько невероятно отзывчивой по сравнению с другими ОС того времени. Для разных задач использовалось много разных потоков.
Только не ожидайте, что чтение нескольких потоков с диска поможет.
Кроме того, вы можете использовать aio_read()
для асинхронного ввода-вывода в Linux. Если вы используете Windows, попробуйте прибегнуть к помощи «асинхронного ввода-вывода Windows» (я не совсем уверен, как вы это делаете; я не использую Windows).