SERVER/Windows2024. 3. 6. 02:04요청한 I/O작업 취소하기 - CancelIo, CancelIoEx

I/O 요청을 등록하고, 디바이스 드라이버가 I/O 요청을 처리하기 이전에 앞서 요청했던 I/O 작업을 취소하고 싶을 수있다. 윈도우에서는 이를 위해 CancleIo와 CancleIoEx 함수를 제공한다. CancleIo BOOL WINAPI CancelIo( _In_ HANDLE hFile ); 지정된 핸들에 대해 진행 중인 I/O작업이 있고, 해당 함수를 호출 하는 스레드에서 실행된 경우 CancleIo 함수는 이를 취소한다. I/O작업은 Overlapped I/O로 실행될때만 유효하다. 취소된 모든 I/O작업은 ERROR_OPERATION_ABORTED를 포함하여 완료되며, I/O 작업에 대한 모든 완료통지는 정상적으로 발생한다. 해당 함수는 핸들이 IOCP와 연계되어 있는 경우 사용하기 힘들다. ..

SERVER/Multi-Thread2024. 3. 4. 21:47SRWLock전용 LockGuard 제작하기

lock_guard std::lock_guard - cppreference.com template class lock_guard; (since C++11) The class lock_guard is a mutex wrapper that provides a convenient RAII-style mechanism for owning a mutex for the duration of a scoped block. When a lock_guard object is created, it attempts to take en.cppreference.com lock_guard란 c++11 부터 제공되는 클래스이다. C++의 RAII(Resource Aquisition Is Initailiza..

SERVER/Multi-Thread2024. 2. 12. 16:41스레드의 생성과 종료(_beginthreadex, _endthreadex 소스코드 분석)

쓰레드 생성 CreateThread HANDLE CreateThread( [in, optional] LPSECURITY_ATTRIBUTES lpThreadAttributes, [in] SIZE_T dwStackSize, [in] LPTHREAD_START_ROUTINE lpStartAddress, [in, optional] __drv_aliasesMem LPVOID lpParameter, [in] DWORD dwCreationFlags, [out, optional] LPDWORD lpThreadId ) dwStatckSize 스레드 스택의 크기 프로세스가 시작되면 내부적으로 CreateThread 함수를 호출하여 프로세스의 주 스레드를 초기화한다. 이때, CreateProcess는 실행 파일 내부에 저장..

image