// родитель
HANDLE m_file_owned=CreateMutex(0,FALSE,"я_владею_файлом");
HANDLE e_progress=CreateEvent(0,1,0,L"новые_данные");
...
запускаем детей
...
ждем от них вестей
switch (waitforsingeobject(e_progress,INFINITE))
{
case WAIT_OBJECT_0:
пытаемся завладеть файлом
switch(waitforsingleobject(m_file_owned,INFINITE))
{
case WAIT_OBJECT_0:
читаем файл
ResetEvent(e_progress); гасим событие
ReleaseMutex(m_file_owned) отпускаем файл
}
break;
case WAIT_TIMEOUT:
...
}
// детский процесс
//НЕ делаем OpenEvent или OpenMutex!!!!
HANDLE m_file_owned=CreateMutex(0,FALSE,"я_владею_файлом");
HANDLE e_progress=CreateEvent(0,1,0,L"новые_данные");
...
for (...;...;...)
{
...
switch (waitforsingleobject(m_file_owned,0)) // НЕ ЖДЕМ ДО БЕСКОНЕЧНОСТИ!!!
{
case WAIT_OBJECT_0:
пишем в файл
ReleaseMutex(m_file_owned); отпускаем файл
SetEvent(e_progress); оповещаем об новых данных
}