?? csdn_文檔中心_win32多線程程序設(shè)計(jì)學(xué)習(xí)筆記(第六章 上).htm
字號(hào):
style="COLOR: green; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt">會(huì)系統(tǒng)被激發(fā)<SPAN
lang=EN-US><o:p></o:p></SPAN></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt">int
QueueRequest(int nIndex, DWORD dwLocation, DWORD
dwAmount)<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt">{<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes"> </SPAN></SPAN></B><B><SPAN
lang=EN-US
style="COLOR: green; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes"> </SPAN>//構(gòu)造一個(gè)MANUAL型的event對(duì)象<o:p></o:p></SPAN></B></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><B><SPAN
lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt">ghEvents[nIndex]
= CreateEvent(NULL, TRUE, FALSE, NULL);<o:p></o:p></SPAN></B></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><B><SPAN lang=EN-US
style="COLOR: green; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt">//將此event對(duì)象置入OVERLAPPED結(jié)構(gòu)<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes"> </SPAN></SPAN></B><B><SPAN
lang=EN-US
style="COLOR: red; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes"> </SPAN>gOverlapped[nIndex].hEvent =
ghEvents[nIndex];<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes">
</SPAN>gOverlapped[nIndex].Offset =
dwLocation;<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"> <o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes"> </SPAN>for (i=0;
i<MAX_TRY_COUNT; i++)<o:p></o:p></SPAN></B></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><B><SPAN
lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt">{<o:p></o:p></SPAN></B></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><B><SPAN
lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-tab-count: 1">
</SPAN></SPAN></B><B><SPAN lang=EN-US
style="COLOR: green; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt">//文件ghFile唯一</SPAN></B><B><SPAN
lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes">
</SPAN>rc = ReadFile(</SPAN></B><B><SPAN lang=EN-US
style="COLOR: red; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt">ghFile</SPAN></B><B><SPAN
lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt">,
gBuffers[nIndex],&dwNumread,&gOverlapped[nIndex]);<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-tab-count: 2">
</SPAN></SPAN></B><B><SPAN lang=EN-US
style="COLOR: green; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt">//處理成功<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes">
</SPAN>if (rc)<SPAN style="mso-spacerun: yes"> </SPAN>return
TRUE;<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"> <o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes">
</SPAN>err = GetLastError();<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"> <o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes">
</SPAN>if (err == ERROR_IO_PENDING)<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes">
</SPAN>{<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes">
</SPAN></SPAN></B><B><SPAN lang=EN-US
style="COLOR: green; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt">//當(dāng)錯(cuò)誤是ERROR_IO_PENDING,那意味著讀文件的操作還在進(jìn)行中</SPAN></B><B><SPAN
lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes">
</SPAN>return TRUE;<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes">
</SPAN>}<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"> <o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes">
</SPAN></SPAN></B><B><SPAN lang=EN-US
style="COLOR: green; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes"> </SPAN>//
處理一些可恢復(fù)的錯(cuò)誤<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes">
</SPAN>if ( err == ERROR_INVALID_USER_BUFFER
||<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes">
</SPAN>err == ERROR_NOT_ENOUGH_QUOTA ||<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes">
</SPAN>err == ERROR_NOT_ENOUGH_MEMORY )<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes">
</SPAN>{<o:p></o:p></SPAN></B></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 54pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt">Sleep(50);<SPAN
style="mso-spacerun: yes"> </SPAN><o:p></o:p></SPAN></B></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 54pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt">continue;</SPAN></B><B><SPAN
lang=EN-US
style="COLOR: green; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt">//重試<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes">
</SPAN>}<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes">
</SPAN></SPAN></B><B><SPAN lang=EN-US
style="COLOR: green; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes"> </SPAN>//
如果GetLastError()返回的不是以上列出的錯(cuò)誤,放棄<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes">
</SPAN>break;<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes">
</SPAN>}<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-spacerun: yes"> </SPAN><SPAN
style="mso-spacerun: yes"> </SPAN>return
-1;<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt">}<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
style="COLOR: black; FONT-FAMILY: 宋體; FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt">嗨!當(dāng)大家耐著性子看到這里肯定都在罵,這寫的什么東西,照本宣科嘛。唉,沒辦法,這個(gè)東西不好舉例子,只有寫兩個(gè)程序片段,加強(qiáng)記憶了,見諒、見諒!!!<SPAN
lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<P> </P><BR></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>
<TABLE align=center bgColor=#006699 border=0 cell
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -