createfile handle 관련 질문 입니다..
글쓴이: someday1117 / 작성시간: 화, 2008/05/20 - 4:38오후
void _log() { EnterCriticalSection( &g_cs ); HANDLE l_hFile; l_hFile = ::CreateFile( strFilePath, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ); ~~~~ ~~~~ ~~~~ WriteFile( l_hFile, pBuffer, _tcslen(pBuffer), &dwBytes, NULL ); CloseHandle( l_hFile ); LeaveCriticalSection(&g_cs); }
위의 함수를 쓰레드 1000개가 동시에 실행 시킵니다.. (같은 파일을 write 함)
위에서 처럼 동기화 처리를 하면 아무런 이상 없이 파일에 1000번 write가 됩니다..
그런데.. 위의 함수에서 동기화 처리를 하지 않으면 1000번의 write가 제대로 수행이 안됩니다..
GetLastError함수에서 6번 을 토해 내면서 write가 제대로 수행이 안됩니다..
여기서 write가 제대로 안되는 이유를 자세히 모르겠습니다... 어렴풋이는 짐작이 가는데..
자세한 이유를 모르겠습니다.. 고수님들의 도움을 얻고 싶습니다..
그리고 위 함수에서 동기화 없이 1000번의 write를 제대로 수행 하고 싶은데..
어떻게 해야 될지를 잘 모르겠습니다.. 힌트라도 주신다면 정말 감사 하겠습니다..
그럼 수고 하세요~.. ^^..
Forums:
댓글 달기