您的位置:程序门 -> vc/mfc -> 进程/线程/dll



那些情况下要考虑多线程编程


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


那些情况下要考虑多线程编程
发表于:2007-09-14 15:45:39 楼主
最近考虑多线程编程问题
        不过一直有个疑问就是那些情况下就要考虑用多线程了;当然这是经验加实战问题。
        希望高手多多说明,举一些例子(不是代码)。

附加:
      能不能解释一下进程映射的地址空间中都存在些什么。比如:模块,dll什么的。
      如果两个进程同时都要运行一段同样的代码,其中一个甚至修改,那该怎么办。
发表于:2007-09-14 15:58:071楼 得分:0
比如你的程序中要读一个大大的文件,就要用多线程了,因为不用多线程,界面会停在那儿
发表于:2007-09-14 16:03:262楼 得分:0
比如播放视频时要用多线程,不然的话播放时就不能有别的操作了。
发表于:2007-09-15 09:01:363楼 得分:0

在   dos   时代,如果做一个复杂的运算时,需要20秒时间,那么这时只能给用户显示“计算机正在运算”等字样,用户等待运算完成;

到了   windows   时代,这种运行就可以开另一个线程在后台操作,用户在主界面中还可以继续操作,比如:用户可以中断后台的运算。

在单cpu上,多线程编程使编程变的更简单了。

其实,在   dos   下也可以做到很多,只是比较复杂。

如果做过单片机编程就知道,一个程序控制多个对时间有要求的任务是比较复杂的。

操作系统的多线程机制确实使编程简单多了。
发表于:2007-09-15 16:02:434楼 得分:0
做好同步
发表于:2007-09-16 19:21:135楼 得分:0
1防止界面线程阻塞,正如wltg2001(红猪)   所说的,如果有大量的cpu计算的工作,那么不开辟一个工作线程的话,界面线程有阻塞导致ui无法交互。还有一些情况针对第三方dll或者com调用不了解其内部实现方式(有可能内部有导致程序阻塞的函数)要单独开辟个线程处理一下。

2异步的socket通信,一般接收数据及处理数据要开辟线程。例如重叠io和线程池.

3提高程序运行效率,前提是工作线程执行时cpu占用率很低(如果开辟一个线程cpu占用率都100%了那么就不要在线程上费心思了,瓶颈不在这里),多开辟几个工作线程可以使工作提前完成。例如多线程下载工具,flashget,网络蚂蚁,多线程浏览器

多线程的处理要注意同步。



快速检索

最新资讯
热门点击