My Dll записывает данные в файл «Sample.txt».запись не выполняется в том же файле из двух процессов
Если Dll загружается двумя процессами, тогда Sample.txt будет записан обоими процессами.
В этом случае в него записывается только процесс, который записывает сначала в файл. Я не мог видеть данные второго процесса в этом Sample.txt. Я использую Mutex для синхронизации между процессами.
Мой код, как показано ниже,
HANDLE MLock = CreateMutex(NULL,FALSE,L"MLock");
WaitForSingleObject(MLock,INFINITE);
ofstream fp;
fp.open("Sample.txt",ios::app);
fp << GetCurrentProcessID();
fp.close();
ReleaseMutex(MLock);
я могу видеть только идентификатор первого процесса находится в sample.txt. Только если первый процесс убит, записываются данные второго процесса. Где я иду не так?
Примечание: Эта проблема возникает только на нескольких машинах.
Вы испускают обработку ошибок из вашего примера? Обратите внимание, что 'CreateMutex' может возвращать' NULL'. – Default
Кроме того, 'WaitForSingleObject' также может возвращать разные результаты. Вы можете проверить пример [здесь] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms686927 (v = vs.85) .aspx) для использования мьютексов с 'CreateMutex' и 'WaitForSingleObject' – Default
Хотя, я бы, скорее всего, рекомендовал использовать [' lock_guard'] (http://en.cppreference.com/w/cpp/thread/lock_guard). – Default