C#中的线程(三)使用多线程
第三部分:使用多线程
1.单元模式和 Windows Forms
单元模式线程是一个自动线程安全机制,非常贴近于 —— 的遗留下的
组件对象模型。尽管 最大地放弃摆脱了遗留下的模型,但很多时候它也会突然出现,
这是因为有必要与旧的 进行通信。单元模式线程与 最相关,因为大多
使用或包装了长期存在的 ——连同它的单元传统。
单元是多线程的逻辑上的“容器”,单元产生两种容量——“单的”和“多的”。单线 程单元
只包含一个线程;多线程单元可以包含任何数量的线程。单线程模式更普遍并且能与两者
有互操作性。
就像包含线程一样,单元也包含对象,当对象在一个单元内被创建后,在它的生命周
期中它将一直存在在那,永远也“居家不出”地与那些驻留线程在一起。这类似于被包含
在同步环境中,除了同步环境中没有自己的或包含线程。任何线程可以访问在任何同
步环境中的对象——在排它锁的控制中。但是单元内的对象只有单元内的线程才可以访问。
想象一个图书馆,每本书都象征着一个对象;借出书是不被允许的,书都在图书馆创
建并直到它寿终正寝。此外,我们用一个人来象征一个线程。
一个同步内容的图书馆允许任何人进入,同时同一时刻只允许一个人进入,在图书馆
外会形成队列。
单元模式的图书馆有常驻维护人员——对于单线程模式的图书馆有一个图书管理员,
对于多线程模式的图书馆则有一个团队的管理员。没人被允许除了隶属与维护人员的人 —
—资助人想要完成研究就必须给图书管理员发信号,然后告诉管理员去做工作!给管理员
发信号被称为调度编组——资助人通过调度把方法依次读出给一个隶属管理员的人(或,
某个隶属管理员的人!)。调度编组是自动的,在 通过信息泵被实现在库
结尾。这就是操作系统经常检查键盘和鼠标的机制。如果信息到达的太快了,以致不能被
处理,它们将形成消息队列,所以它们可以以它们到达的顺序被处理。