- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十四讲 线程的创建
一、线程概念的引入
1.单线程程序存在的问题:
bool Stop;
private void button1_Click(object sender, EventArgs e)
{
Stop = false;
for (int i = 0; ; i++)
{
if (i 10000) i = 0;
label1.Text = i.ToString();
if (Stop) break;
}
}
private void button2_Click(object sender, EventArgs e)
{
Stop = true;
}
程序运行后处于一种假死的状态,没有任何反映,也不再响应任何事件。
2. 创建一个简单的线程:
bool Stop;
Thread newThread;
public Form1()
{
InitializeComponent();
CheckForIllegalCrossThreadCalls = false;//不对跨线程的控件进行检查
newThread =new Thread (Do);
}
public void Do()
{
for (int i = 0; ; i++)
{
if (i 10000) i = 0;
label1.Text = i.ToString();
if (Stop) break;
}
}
private void button1_Click(object sender, EventArgs e)
{
Stop = false;
newThread.Start();
}
private void button2_Click(object sender, EventArgs e)
{
Stop = true;
}
若无语句:CheckForIllegalCrossThreadCalls = false;
出现异常:线程间操作无效,从不是创建控件label1的线程访问它。
二、多线程的概念
1、程序与进程概念的区别与联系
程序是指令的集合,是一个静态的概念。
进程是运行中的程序,是一个动态的概念。
一个程序在不同的时间,在不同的系统环境下运行,对应的是不同的进程。因为程序在运行时系统分配的资源可能不同,所处的运行阶段可能不同,运行的结果可能不同。
2、多进程
单进程的情况下,系统的资源利用率很低。
多进程的情况下,可提高系统的效率。
有些资源是可以共享的,有些资源是独占的,就需要进程等待。为了让各个进程等待的时间更短,CPU的管理采用时间片轮转方式管理。
可以充分利用系统的资源,缩短各个进程的等待时间。
3、多线程
将一个程序分割成很多个功能独立的程序段,各个程序段可以同时运行。这样一个正运行中的程序段可认为是一个线程,一个进程可以包含多个线程。
多线程可以提高系统的工作效率,可以多个用户分工合作,相互配合,共同完成一个任务。
三、线程的状态与线程管理
线程状态:
未启动,已创建,未启动。
运行,参与CPU的调试。
休眠,已启动,但已不参与CPU的调度。
正在请求挂起,
挂起,已启动,但已参与CPU的调试。
正在请求终止
已停止,不参与CPU调试。
线程管理:
新创建的线程处于未启动状态。
未启动状态的进程,可通过调用Start()方法启动,启动后处于运行状态。
运行状态的进程,可通过调用Sleep()方法进入休眠状态,休眠时间到后,回到运行状态。
运行状态的进程,可通过另一个进程A调用Join()方法进入休眠状态,在进程A结束或休眠时间到后,回到运行状态。
运行状态的进程,可通过调用Suspend()方法,进入请求挂起状态,在安全的时候将进程挂起,进入挂起状态。
您可能关注的文档
最近下载
- 海浦蒙特HD800L系列电梯专用控制器用户手册-中-V1.0.pdf VIP
- 消杀蚊虫台账记录word编辑版.doc VIP
- 2025年计算机计算机二级-MS Office高级应用与设计参考题库含答案解析.docx VIP
- 一位妈妈写给叛逆儿子的信,有孩子的必须给孩子读一遍.doc VIP
- 暖通空调系统水力平衡与解决方案.ppt VIP
- 暖通空调系统全面水力平衡解决方案(2014年第一版)-N.ppt VIP
- 8.1功与功率 (教学课件)-高中物理人教版(2019)必修第二册 .pptx VIP
- 资金管理复习试题附答案(一).doc
- 《归园田居(其一)》课件30张.pptx
- 腹膜后疾病影像诊断思路.pptx VIP
文档评论(0)