게시글
질문&답변
2023.12.29
비동기 Callback방식 코드 질문
#include #include #include void CALLBACK FileIoComplete( DWORD dwError, DWORD dwTransfered, LPOVERLAPPED pO1){ printf("FileIoComplete() Callback - [%d 바이트] 쓰기 완료 -%s\n", dwTransfered, (char*)pO1->hEvent); //hEvent 멤버를 포인터로 전용했으므로 가리키는 대상 메모리를 해제한다. //이 메모리는 IoThreadFunction() 함수에서 동적 할당된 것들이다! delete[] pO1->hEvent; delete pO1; puts("FileIoComplete() - return \n");}DWORD WINAPI IoThreadFunction(LPVOID pParam) { char* pszBuffer = new char[16]; memset(pszBuffer, 0, sizeof(char) * 16); strcpy_s(pszBuffer, sizeof(char) * 16, "Hello IOCP"); LPOVERLAPPED pOverlapped = NULL; pOverlapped = new OVERLAPPED; memset(pOverlapped, 0, sizeof(OVERLAPPED)); pOverlapped->Offset = 1024 1024 5; pOverlapped->hEvent = pszBuffer; puts("IoThreadFunction() - 중첩된 쓰기 시도"); ::WriteFileEx((HANDLE)pParam, pszBuffer, sizeof(char) * 16, pOverlapped, FileIoComplete); // 비동기 쓰기 시도에 대해 ALERTABLE_WAIT 상태로 대기 for (; ::SleepEx(1, TRUE) != WAIT_IO_COMPLETION;); { //SleepEx를 호출한 WorkerThread가 ALERTABLE_WAIT 상태가 된다/ puts("IothreadFunction() - return "); } return 0;}int tmain(int argc, TCHAR* argv[]) { HANDLE hFile = ::CreateFile(_T("TestFile.txt"), GENERIC_WRITE, // 쓰기 모드 0, // 공유하지 않음 NULL, CREATE_ALWAYS, // 무조건 생성 FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, // 중첩된 쓰기 -> 비동기 쓰기 NULL); HANDLE hThread = NULL; DWORD dwThreadID = 0; dwThreadID=0; hThread = ::CreateThread( NULL, 0, IoThreadFunction, hFile, 0, &dwThreadID); //작업자 스레드가 종료될 때까지 기다린다. ::WaitForSingleObject(hThread,INFINITE); return 0;}이렇게 작성해서 해결했습니다.. 감사합니다.
- 1
- 4
- 226
질문&답변
2023.01.07
source file not compiled
원인을 찾은것 같습니다. input.txt를 dev에 넣고 수정한 후 F11을 누르면 읽어지지 않고 컴파일 되지 않아 dev안에 있는 것을 빼고 input.txt를 넣으면 F11 잘 먹힙니다. 이런 에러는 처음인데, 원인을 찾아서 좋네요.ㅎ
- 0
- 3
- 817
질문&답변
2023.01.07
source file not compiled
그냥 다른 폴더에 새로 만들어서 했습니다. AA.dev를 열어서 main.cpp를 F11눌러서 했는데, 전에 실행된 AA.exe파일로 그대로 되어 있고, main.exe도 이상했었고, 암튼 뭔가 오류가 났었습니다. 일단 새로운 dev프로젝트에서 할 예정인데,왜 위와 같은 오류가 생긴건가요? 추후 또 생길 수 있을것 같아서 질문에 대하여 꼭 답변 부탁드립니다
- 0
- 3
- 817
질문&답변
2023.01.07
source file not compiled
잘 실행되다가 주민등록번호 실행한 이후 부터 에러가 나네요... f9누르고 f10 누르면.,, Project is not compiled Compile now? -> source file not compiled. 되네요.(사진)
- 0
- 3
- 817