windows io 非同步讀寫

來源:互聯網
上載者:User

#include <windows.h><br />#include <stdio.h><br />void main()<br />{<br />HANDLE hfile = CreateFile("test.txt",GENERIC_READ | GENERIC_WRITE,<br />0,NULL,CREATE_ALWAYS, FILE_FLAG_OVERLAPPED | FILE_ATTRIBUTE_NORMAL,NULL);<br />if (hfile == INVALID_HANDLE_VALUE)<br />{<br />printf("invalid handle value./n");<br />}<br />OVERLAPPED oWrite = { 0 };<br />oWrite.Offset = 0;<br />oWrite.hEvent = CreateEvent(NULL,FALSE,FALSE,NULL);<br />WriteFile(hfile, "Jeffery chen", 14, NULL, &oWrite);<br />BYTE bBuffer[10];<br />OVERLAPPED oRead = { 0 };<br />oRead.Offset = 5; /**start from 6 char */<br />oRead.hEvent = CreateEvent(NULL,FALSE,FALSE,NULL);<br />ReadFile(hfile, bBuffer, 10, NULL, &oRead);</p><p>HANDLE h[2];<br />h[0] = oRead.hEvent;<br />h[1] = oWrite.hEvent;<br />while (true)<br />{<br />Sleep(3000);<br />DWORD dw = WaitForMultipleObjects(2, h, FALSE, 1000);<br />if(dw == WAIT_OBJECT_0)<br />{<br />printf("can be read./n");<br />oRead.Offset += 1;<br />//ReadFile(hfile,bBuffer,10,NULL,&oRead);<br />//Handle to an event set to the signaled state when the transfer has been completed<br />//當調用完ReadFile後,會自動化佈建到有訊號狀態。<br />printf("%s/n",bBuffer);<br />}<br />else if (dw == (WAIT_OBJECT_0 + 1))<br />{<br />printf("can write io./n");<br />//WriteFile(hfile,"shawn",6,NULL,&oWrite);<br />//Handle to an event set to the signaled state when the transfer has been completed<br />}<br />else<br />break;<br />}<br />getchar();<br />} 

 

在建立event時,第二個參數表明是否為manual-reset event,此處設為false,表明系統自動管理。

當調用WaitForMultipleObject時使訊號處於無訊號狀態。

當調用ReadFile或WriteFile時使訊號處於有訊號狀態 。

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.