Есть несколько потоков, которые одновременно пишут в один файл
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. Есть ли еще какие-либо решения позволяющие нескольким потокам писать в один файл?