您的位置:首页 > 其它

(原创)多线程设计模式 序言

2006-04-17 15:15 232 查看
线程不是目的,而是方法和手段。

在程序中我们为什么要使用到多线程,如何使用多线程,根据我学习的体会应该考虑到下面几个问题:

1、运算时间

这是选择多线程的必要条件。如果一段代码非常耗时,在他工作的时间内程序失去响应,这是无法忍受的。一般情况下会把这段代码放到一个独立的线程里面,这样在他运算的过程中,程序还可以继续处理其他事情。当然,如果是不一般的情况,比如说你的程序就完成这么一个运算任务,然后就结束了,运算过程中程序也不需要作其他工作,就没必要开起一个线程了。

2、数据访问特点

数据访问特点是考虑选择什么样的多线程模式必须参考的条件。比如说数据是只读的还是读写的,如果是只读的,一般情况下就不需要考虑互斥性,可以多个线程同时访问数据。如果是读写的,一个线程在读取的同时,另一个线程在改写数据,这样很可能得不到正确的数据,所以一般情况下,都要对可读写数据进行互斥保护。

关于数据访问特点另一个需要考虑的因素是,工作线程对所访问的数据是否有条件限制。比如说,一个线程在不停的改变数据,一会变为正数,一会变为负数;而另一个线程的工作是获取数据的平方根,因此,这个线程在工作之前就必须测试数据访问条件,如果是正数当然可以工作,如果是负数就必须等待。等待什么呢?当然是等待第一个线程的通知,“现在数据发生变化了,请重新尝试一下吧!”,这个工作是第一个线程改变数据状态后完成的。

3、线程数量和数据吞吐性

一般情况下,同时工作的线程越多,数据吞吐性越好,但是在考虑到互斥保护的时候,又不能让太多的线程同时工作,在保证数据线程安全的情况下,尽量增大数据吞吐性,所以这也是在选择多线程模式时需要考虑的两个因素。

再遇到需要使用多线程的情况,只要确定了这几个特点,基本上就能知道选择什么样的多线程模式了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: