<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0063)http://www.cbinews.com/developer/showcontent.php?articleid=3249 -->
<HTML><HEAD><TITLE>用MFC编写多线程程序实例</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content="MSHTML 5.00.3502.5390" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId>
<STYLE title=indexpage type=text/css>BODY {
FONT-SIZE: 14px; LINE-HEIGHT: 18px
}
UL {
FONT-SIZE: 14px; LINE-HEIGHT: 18px
}
OL {
FONT-SIZE: 14px; LINE-HEIGHT: 18px
}
TD {
FONT-SIZE: 9pt
}
A:link {
COLOR: #000000; TEXT-DECORATION: none
}
A:visited {
COLOR: #333333; TEXT-DECORATION: none
}
A:active {
COLOR: #666666; TEXT-DECORATION: none
}
A:hover {
COLOR: #ff6633; TEXT-DECORATION: underline
}
A {
COLOR: #000000; FONT-SIZE: 9pt; TEXT-DECORATION: none
}
P {
FONT-SIZE: 9pt; LINE-HEIGHT: 18px
}
.help {
CURSOR: help
}
</STYLE>
</HEAD>
<BODY bgColor=#ffffff topMargin=0>
<DIV align=center>
<META content="Microsoft FrontPage 4.0" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId>
<DIV align=center>
<CENTER>
<TABLE border=0 cellPadding=0 cellSpacing=0 width=750>
<TBODY>
<TR>
<TD>
<DIV align=center>
<TABLE border=0 cellPadding=0 cellSpacing=0>
<TBODY>
<TR>
<TD><IMG border=0 height=78 src="用MFC编写多线程程序实例.files/1_r1_c1.gif"
width=179></TD>
<TD background=用MFC编写多线程程序实例.files/1_r1_c2.gif height=78 width=472>
<P align=center><A href="http://www.founder.com.cn/" target=new><IMG
alt=方正 border=0 height=60 src="用MFC编写多线程程序实例.files/fz620.gif"
width=468></A></P></TD>
<TD background=用MFC编写多线程程序实例.files/1_r1_c4.gif height=78 width=99>
<DIV align=center>
<TABLE border=0 cellPadding=0 cellSpacing=0 height=39 width="99%">
<TBODY>
<TR>
<TD height=11><IMG border=0 height=10
src="用MFC编写多线程程序实例.files/book.gif" width=14></TD>
<TD height=11><A class=a02
href="http://www.cbinews.com/developer/"
onclick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.cbinews.com/developer');"
title=程序春秋>设为首页</A></TD></TR>
<TR>
<TD height=11><IMG border=0 height=10
src="用MFC编写多线程程序实例.files/book.gif" width=14></TD>
<TD height=11><A class=a02
href="http://www.cbinews.com/ad/program.htm"
target=_blank>广告刊例</A></TD></TR>
<TR>
<TD height=14><IMG border=0 height=10
src="用MFC编写多线程程序实例.files/book.gif" width=14></TD>
<TD height=14><A class=a02
href="http://www.cbinews.com/developer/chun1.php?bcolumn=经销商名单">经销商名单</A></TD></TR>
<TR>
<TD height=14><IMG border=0 height=10
src="用MFC编写多线程程序实例.files/book.gif"
width=14></TD></TR></TBODY></TABLE></DIV></TD></TR></TBODY></TABLE></DIV></TD></TR>
<TR>
<TD>
<DIV align=center>
<TABLE border=0 cellPadding=0 cellSpacing=0>
<TBODY>
<TR>
<TD background=用MFC编写多线程程序实例.files/1_r2_c1.gif height=34 width=282>
<DIV align=left>
<FORM action=searchresult.php method=post
style="MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px">
<TABLE border=0 cellPadding=0 cellSpacing=0>
<TBODY>
<TR>
<TD><FONT color=#ffffff> 请输入关键词 </FONT></TD>
<TD><INPUT name=search
style="BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid"></TD>
<TD> <INPUT name=B1 type=submit value=查询></TD></TR></TBODY></TABLE></FORM></DIV></TD>
<TD background=用MFC编写多线程程序实例.files/1_r2_c3.gif height=34 vAlign=center
width=468>
<DIV align=center>
<TABLE border=0 cellPadding=0 cellSpacing=0>
<TBODY>
<TR>
<TD vAlign=bottom><IMG border=0 height=19
src="用MFC编写多线程程序实例.files/d.gif" width=18></TD>
<TD vAlign=bottom><FONT color=#ffffff> <A class=a01
href="http://www.cbinews.com/developer/index.php">首页</A>
</FONT></TD>
<TD vAlign=bottom><IMG border=0 height=19
src="用MFC编写多线程程序实例.files/d.gif" width=18></TD>
<TD vAlign=bottom><FONT color=#ffffff> <A class=a01
href="http://www.cbinews.com/developer/news.php">热点聚焦</A>
</FONT></TD>
<TD vAlign=bottom><IMG border=0 height=19
src="用MFC编写多线程程序实例.files/d.gif" width=18></TD>
<TD vAlign=bottom><FONT color=#ffffff> <A class=a01
href="http://www.cbinews.com/developer/text.php">经典文章</A>
</FONT></TD>
<TD vAlign=bottom><IMG border=0 height=19
src="用MFC编写多线程程序实例.files/d.gif" width=18></TD>
<TD vAlign=bottom><IMG border=0 height=19
src="用MFC编写多线程程序实例.files/d.gif" width=18></TD>
<TD vAlign=bottom><FONT color=#ffffff> <A class=a01
href="http://www.cbinews.com/developer/chun.php">春秋茶楼</A></FONT></TD></TR></TBODY></TABLE></DIV></TD></TR></TBODY></TABLE></DIV></TD></TR></TBODY></TABLE></CENTER></DIV></DIV>
<DIV align=center>
<TABLE width="90%">
<TBODY>
<TR>
<TH class=f24 colSpan=2>
<P align=left>你目前所在的位置:程序春秋>>经典文章>>开发文档</P></TH></TR>
<CENTER>
<TR>
<TH class=f24 colSpan=2>用MFC编写多线程程序实例</TH></TR>
<TR>
<TD align=middle colSpan=2></TD></TR>
<TR>
<TH colSpan=2>
<HR SIZE=1>
</TH></TR>
<TR>
<TD align=right width=576>作者:林俊 </TD>
<TD align=right width=90></TD></TR>
<TR>
<TD colSpan=2>
<P
style="LINE-HEIGHT: 150%; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px"> <BR>
<BR> 线程技术使不同的代码可以同时运行。当然,只有在多C P
U的计算机上,多个线程才能够真正地同时运行。然而,由于操作系统把C P
U的时间分成很短的片段分配给每个线程,这样给人的感觉好像是多个线程真的同时运行。<BR>
线程的概念与1 6位环境中的多任务有很大的不同。或许曾听人们这样讲: Win32是一种抢占式操作系统,而Windows 3.1
是一种协作式的多任务环境。其关键区别在于:在抢占式多任务环境中,操作系统负责管理哪个线程在什么时候执行。如果当线程1暂停执行时,线程2才有机会获得CPU时间,我们说线程1是抢占的。如果某个线程的代码陷入死循环,这并不可怕,操作系统仍会安排时间给其他线程。在Windows
3.1下,程序员必须保证应用程序能够把控制权返还给Windows。如果这一步失败,将导致整个操作环境锁死,或许你已经有过这样的痛苦经历。只要稍微想想便会明白,
16位的Windows是如此脆弱,它依赖于应用程序的运行情况,并且不允许程序陷入死循环或无穷递归以及任何封闭状态。这是因为所有的应用程序都必须协助Windows工作,这种工作类型被称为协作式多任务系统。<BR>
在很多情况下,需要采用多线程技术进行程序设计。例如,常用的字处理软件Word,当输入文字的时候,Word同时进行拼写和语法的检验,也就是将文档中的词语与词库中的词语进行比较,并对文档中的语句进行语法分析。这些操作都比较耗费时间,但是我们在使用Word的时候并没有感觉到输入过程有明显的滞后现象。这里Word就采用了多线程技术,其中一个线程接收输入,另一个线程进行拼写和语法的检验。<BR> &