Можно заморочиться с POE и событийной машиной, но вот с thread-ми завязываться не советую. Я однажды реализовывал что-то подобное (чтение из файла и запись в файл) и проблема у меня была с тем, что в процессе чтения из файла происходило переключение контекста! Это приводило к тому что строка считывалась не полностью сразу двумя процессами. Блокировки на файл мне не помогли.
Может я конечно что-то не так делал, но с тех пор решил с потоками не связываться.