- 1、本文档共31页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
2012-2013学年第一学期
计算机操作系统实验报告
实验一Windows多线程
【开发语言及实现平台或实验环境】
C++/C#
MicrosoftVisualStudio6.0/MicrosoftVisualStudio.NET
【实验目的】
进一步理解操作系统的并发性;
了解Windows线程创建方法,并通过查阅资料理解各参数的含义;
了解多线程程序设计方法,并进行简单应用。
【实验要求】
逐程序进行简要分析、运行各程序并仔细阅读注释;
查阅MSDN或其他资料,掌握相关系统调用使用方法和参数含义;
完成实验报告。
【实验结果与分析】
1
Sleep是阻塞线程函数。它会在当前语句阻塞一段时间,参数是以1/1000秒为单位的,线程1和主线程并发执行,Sleep(10)使当前线程放弃目前的时间片,并且在10ms内不会被再次调度。会使主进程和分进程同时被调度,进程也有父子关系。父进程退出后子进程也会退出,而加入Sleep后主进程先停止10后子进程就有时间进行了。
加入循环,使得俩个进程交替执行,出现俩个1,俩个6是因为不可再现性,即俩个进程同时迈出同一部步,俩个进程中存在共享变量。因为加入while所以不需要sleep,父子进程也能同时进行。
2
预又e仑C七七仑七.1.1.t11.、tee1.l11Lhr匕<1l12thl.eadlthreadth1?eadlth1?ead2thi■eadl
预
又
e
仑
C
七
七
仑
七
.1.1.
h...th..千“打11七ln·cad2tinc.d1t1lreo112"th1?eadlthi■ead2thi?eadlt王ead2thi■ead1th王ead2th.千“打11th];.ead2七hrcud1t.I1.t七Ol12
h
.
.
.
i石
is1S3S116-}义.-1SS6eeeeeEPCCteeeeeep匕匕..}9S3S
is
1S
3
S
1
16
-
}
义
.
-
1
S
S
6
eeeeeEPCCteeeeeep
匕匕
.
.
}9S
3S
SS1
-1
SS1
S
S1S
又
c
o
&
S
C
七
-
-
.
_ ·
·
'
-
·
'
.
' l
SS SS1
~- ll
` ``
1_ ``
1..-
1
l...l.I
``
.I.L.L
i七 七elli.::,;.::it::11
七icl1ct七:23t..ic..;.ht::t..:22t..ick匕t..忑己21tickets:20
L;` C:\DOCOIE冒IS皿 SEITIGS\J江夏I
L;` C:\DOCOIE冒IS皿 SEITIGS\J江夏I页ISIKAIOll\杲酉\u\Debug\u.exe
亏:24
_
ticket
th1:?ead1
tln·CO.d2
tickets:l"/tickets:18tickets:17
tickets:16
111111111111111111111
lllllJlllllllllJlllll
七ie-lict.:;.::t2
t..iLkct..&;11tic:kets:10tickets:citicket:s:Btickets:7
tickets:6
ticket:s:S
ticket+;r kpt-:4
ticket
亏=3七ickct己=2t..iLkct..5己1
Pr匕芯:::;
Pr
d.llY
k匕y
t..u
u11t..上1111.lt:
加入sleep(1000)后父进程有足够的时间运行子进程
3
加入俩个sleep(1)后,有可能到thread1isselltickets:时间片就停了,tickets没--,还可以运行thread2isselltickets:"<<tickets—也就是说tickets变为0,返回再运行thread1isselltickets时就卖0号票了
【实验思考及总结】
………
加入循环,使得俩个进程交替执行
Sleep是阻
文档评论(0)