您的位置:首页 > 其它

进程与线程的差别以及多线程的简单知识点

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  进程 线程 多线程