У меня есть программа на C, которая имеет несколько рабочих потоков.Существует основной поток, который периодически (каждые 0,2 с) выполняет некоторые основные проверки (т. Е. Завершил ли поток, получил ли он сигнал и т. Д.).При каждой проверке я хотел бы записать в файл журнала любые данные, которые любой из потоков может иметь в своем буфере журнала, в один файл журнала.
Моя первоначальная идея состояла в том, чтобы просто открыть файл журнала, записать данные из всех потоков и затем снова закрыть его.Я беспокоюсь, что это может быть слишком сложно, поскольку эти проверки происходят каждые 0,2 с.
Итак, мой вопрос - неэффективен ли этот сценарий?
Если да, может ли кто-нибудь предложить лучшее решение?
Я думал о том, чтобы оставить дескриптор файла открытым и просто записывать новые данные при каждой проверке, но тогда возникает проблема, если каким-либо образом физический файл удаляется, программа никогда не узнает (без перепроверки, и в этом случаемы могли бы просто открыть файл снова), и данные журнала будут потеряны.
(Эта программа предназначена для работы в течение очень длительных периодов времени, поэтому тот факт, что файл журнала будет удален в какой-то момент, в основном гарантирован из-за ротации журнала.)