//发送请求
//完成后,操作系统提醒我
//APC 是什么
//进程(工厂)->线程(工人)
// APC机制 当工人闲的时候(前提)-》APC列表中的事情(自动执行)
// 线程为可提醒转态下
// Wait Sleep 正儿八经的 可提醒状态
//不好用 APC 不停止的定时器
VOID CALLBACK FileIOCompletionReadRoutine(
_In_ DWORD dwErrorCode,
_In_ DWORD dwNumberOfBytesTransfered,
_Inout_ LPOVERLAPPED lpOverlapped
)
{
MessageBox(nullptr, L"read", L"read", MB_OK);
}
//可提醒 IO (串行模型)
{
HANDLE hFile = CreateFile(TEXT("DEMO.txt"),
GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, nullptr, OPEN_ALWAYS, FILE_FLAG_OVERLAPPED, nullptr);
if (hFile != INVALID_HANDLE_VALUE)
{
const UINT uLen = 255;
BYTE bReadBuf[uLen] = { 0 };
OVERLAPPED oRead = { 0 };
ReadFileEx(hFile, bReadBuf, uLen, &oRead, FileIOCompletionReadRoutine);
//因为线程还不是一个 提醒状态
//SleepEx Wait
SleepEx(100, FALSE);
SleepEx(100, TRUE);//当前 APC被执行
//Do some
}
}
可提醒 IO
最新推荐文章于 2021-09-28 20:37:16 发布