LINUX.ORG.RU

История изменений

Исправление Legioner, (текущая версия) :

Если не заморачиваться - сделай простой код записи в файл и оберни его мютексами, чтобы только один поток мог выполнять эту секцию. Если заморачиваться - сделай поток-логгер и многопоточную очередь сообщений. Запись в лог - добавление сообщения в очередь. Если очередь очень большая, то повесить потк пока место не освободится. А поток логгер выбирает сообщение из очереди и пишет его в файл. Таким образом пока хватает скорости диска для записи, логгирование будет очень быстрое и потоки не будут мешать друг другу. Можно поэкспериментировать с lock-free алгоритмами для очереди сообщений.

Исходная версия Legioner, :

Если не заморачиваться - сделай простой код записи в файл и оберни его мютексами, чтобы только один поток мог выполнять эту секцию. Если заморачиваться - сделай поток-логгер и многопоточную очередь сообщений. Запись в лог - добавление сообщения в очередь. Если очередь очень большая, то повесить процесс пока очередь не освободится. А поток логгер выбирает сообщение из очереди и пишет его в файл. Таким образом пока хватает скорости диска для записи, логгирование будет очень быстрое и потоки не будут мешать друг другу.