WriteFile из разных потоков в один файл
От: sandrey_  
Дата: 12.08.05 12:57
Оценка:
Есть несколько потоков, которые одновременно пишут в один файл


HANDLE hFile;
CRITICAL_SECTION cs;

DWORD ThreadProc1(LPVOID lpParam)
{
...
    EnterCriticalSection(&cs);
    WriteFile(hFile, L"1", ...);
    WriteFile(hFile, L"2", ...);
    LeaveCriticalSection(&cs);
...
}

DWORD ThreadProc2(LPVOID lpParam)
{
...
    EnterCriticalSection(&cs);
    WriteFile(hFile, L"3", ...);
    WriteFile(hFile, L"4", ...);
    LeaveCriticalSection(&cs);
...
}


Критическая секция введена для того что бы в файле не могло получится так: "1324".
Вопрос в следующем: правильно ли я понимаю —
1. если я введу структуру OVERLAPPED, то критические секции будут обрабатываться быстрее и потоки ждать друг-друга будут меньше?
2. как мне корректно создать и инициализировать эту структуру? (с асинхронным вводом/выводом знаком поверхностно)
3. Есть ли еще какие-либо решения позволяющие нескольким потокам писать в один файл?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.