Здравствуйте, Аноним, Вы писали:
А>Какие-то может еще грабли есть от использования lock{} в этом случае ?
Думаю основные грабли в том, что доступ к диску — потенциально долгая операция, даже без "зависания". Вы заставляете все свои потоки которые пишут в лог выстраиваться в очередь ожидая записи лога. Видимо более удачным решением было бы созданий очереди в памяти в которую скидываются сообщения и отдельного потока, который занимается переписыванием из очереди на диск. Естественно дотуп к очереди синхронизируется, но такой способ обеспечивает намного более высокуе степень паралелизма чем оборачивание доступа к диску в критическую секцию(lock).