进程与线程的差别以及多线程的简单知识点
2013-07-10 00:57
260 查看
最开始的计算机一次只能执行一件事情 但是进程就至少得1s 这里的时间是进程与
线程之间的对比性的
早期计算机使用的是进程概念,后来由于进程跟进程之间的切换太慢了(太慢的原因
因为它掌握了很多资源)
所以就引入了线程
进程包括线程- 也可以说线程是进程的细化
同一时间操作系统只能切换一个线程,单位时间内线程切换一般在19ms左右,正常不
超过30ms
线程是windows操作系统任务调度的最小单位,线程执行是无规律的,操作系统有自己
的一套运行机制,
当然如果有其他线程等待时间比较长,那么它会自动调整线程之间的优先级
this.Text=Thread.CurrentThread.ManagedThreadId+""; 获取当前正在工作线程
//允许其他线程来访问,当前线程创建的控件:Control
Control.CheckForIllegalCrossThreadCalls=false; //检查非法跨线程
【线程注意事项】
线程并不是越多越好,因为操作系统在创建线程 以及销毁线程的时候也是非常消耗资
源跟时间的(创建一个线程需要至少1MB的内存空间)
【异步委托实现原理跟多线程是差不多的】
异步委托就是多线程+委托 给那些不懂多线程的程序员用的
【Lock锁】
为什么要用引用类型变量lock(P) 这里P可以是任意引用类型变量
因为引用类型内部有个同步索引块,这么个机制,来实现线程之间的同步的,被锁住
的线程块代码
里面的任何一个变量 或者是方法只有当当前线程执行完之后他才会再次让其他线程来
执行,这样就保证了
多个线程在访问公共资源的时候资源的同步性
【重点】
委托实质是限制方法体的返回值及参数类型的一种跟class同级别的特殊类型
委托需要跟方法绑定, 跟有名的方法绑定称为有名方法(自己取的) 没名字的方法
叫lambda表达式
去掉函数(方法)名字的表达式是为lambda
主窗体
//定义了一个委托
public delegate void SetTextDel(string txt);
主窗体的button事件
{
ChildFrm frm=new ChildFrm();
frm._SetTextDel=new SetTextDel(SetText);
}
一个方法
public void SetText(string txt)
{
this.txtMessage.Text=txt;
}
子窗体frm
//声明了一个委托
public SetTextDel _SetTextDel;
子窗体单击事件
_SetTextDel(this.txtSource.Text);
线程之间的对比性的
早期计算机使用的是进程概念,后来由于进程跟进程之间的切换太慢了(太慢的原因
因为它掌握了很多资源)
所以就引入了线程
进程包括线程- 也可以说线程是进程的细化
同一时间操作系统只能切换一个线程,单位时间内线程切换一般在19ms左右,正常不
超过30ms
线程是windows操作系统任务调度的最小单位,线程执行是无规律的,操作系统有自己
的一套运行机制,
当然如果有其他线程等待时间比较长,那么它会自动调整线程之间的优先级
this.Text=Thread.CurrentThread.ManagedThreadId+""; 获取当前正在工作线程
//允许其他线程来访问,当前线程创建的控件:Control
Control.CheckForIllegalCrossThreadCalls=false; //检查非法跨线程
【线程注意事项】
线程并不是越多越好,因为操作系统在创建线程 以及销毁线程的时候也是非常消耗资
源跟时间的(创建一个线程需要至少1MB的内存空间)
【异步委托实现原理跟多线程是差不多的】
异步委托就是多线程+委托 给那些不懂多线程的程序员用的
【Lock锁】
为什么要用引用类型变量lock(P) 这里P可以是任意引用类型变量
因为引用类型内部有个同步索引块,这么个机制,来实现线程之间的同步的,被锁住
的线程块代码
里面的任何一个变量 或者是方法只有当当前线程执行完之后他才会再次让其他线程来
执行,这样就保证了
多个线程在访问公共资源的时候资源的同步性
【重点】
委托实质是限制方法体的返回值及参数类型的一种跟class同级别的特殊类型
委托需要跟方法绑定, 跟有名的方法绑定称为有名方法(自己取的) 没名字的方法
叫lambda表达式
去掉函数(方法)名字的表达式是为lambda
主窗体
//定义了一个委托
public delegate void SetTextDel(string txt);
主窗体的button事件
{
ChildFrm frm=new ChildFrm();
frm._SetTextDel=new SetTextDel(SetText);
}
一个方法
public void SetText(string txt)
{
this.txtMessage.Text=txt;
}
子窗体frm
//声明了一个委托
public SetTextDel _SetTextDel;
子窗体单击事件
_SetTextDel(this.txtSource.Text);
相关文章推荐
- 进程与线程的差别以及多线程的简单知识点
- 线程和进程的区别?以及如何实现多线程
- 线程,进程以及多线程的开发问题
- 线程和进程有什么差别?Java多线程机制有什么特点?
- iOS边练边学--多线程介绍、NSThread的简单实用、线程安全以及线程之间的通信
- 多线程切换以及线程进程之间关系
- 单核单线程、单核多线程、多核多线程以及并行计算对大数据和复杂算法的简单效应
- 进程,线程,多进程,多线程以及主线程
- 黑马程序员01--线程与进程的区别以及为什么使用多线程?
- 14-08-07 关于程序、进程、线程,以及python中实现多线程的办法
- 进程 线程 多进程 多线程之间的差异以及优缺点
- 线程与进程的定义以及为什么要使用多线程?
- iOS学习重要知识点整理02-进程和线程的一个简单解释
- 多线程-进程和线程概述以及如何使用多线程
- 进程和线程以及多线程
- iOS多线程简单介绍(线程,进程)
- java进程、线程、多线程以及线程安全问题
- ios开发中 线程、进程即多线程简单介绍
- Linux&c 文件操作,线程进程控制,网络编程,简单知识点梳理
- 牛客网Java刷题知识点之什么是进程、什么是线程、什么是多线程、多线程的好处和弊端、多线程的创建方式、JVM中的多线程解析、多线程运行图解