Windows多线程技术研究(二):多线程基本概念
来源:互联网 发布:dis mac-add 编辑:程序博客网 时间:2024/05/01 08:15
Windows多线程技术研究(二):多线程基本概念
“ Threads绝对可以缩短程序的执行时间吗? ”
“应该尽量多产生threads来帮助程序工作吗?”
“任何种类的程序都可以获得Multi-Thread的好处吗?”
似是而非的观念会将你的程序带往更坏的境界。
-----《Win32多线程程序设计》
在你想用线程时,你必须清楚地明白什么是现程,它能干什么,不能做什么。切记!!
每个程序执行时都会产生一个进程,而每一个进程至少要有一个主线程。这个线程其实
是进程执行的一条线索,除了主线程外你还可以给进程增加其它的线程,也即增加其它
的执行线索,由此在某种程度上可以看成是给一个应用程序增加了多任务功能。当程序
运行后,您可以根据各种条件挂起或运行这些线程,尤其在多CPU的环境中,这些线程
是并发运行的。
多线程就是在一个进程内有多个线程。从而使一个应用程序有了多任务
的功能。有人会问:多进程技术不是也可以实现这一点吗?但是创建进程的高消耗(每
个进程都有独立的数据和代码空间),进程之间通信的不方便(消息机制),进程切换
的时间太长,这些导致了多线程的提出。
对于单CPU来说(没有开启超线程),在同一时间只能执行一个线程,所以如果想
实现多任务,那么就只能每个进程或线程获得一个时间片,在某个时间片内,只能一个
线程执行,然后按照某种策略换其他线程执行。由于时间片很短,这样给用户的感觉是
同时有好多线程在执行。但是线程切换是有代价的,因此如果采用多进程,那么就需要
将线程所隶属的该进程所需要的内存进行切换,这时间代价是很多的。而线程切换代价
就很少,线程是可以共享内存的。所以采用多线程在切换上花费的比多进程少得多。
但是,线程切换还是需要时间消耗的,所以采用一个拥有两个线程的进程执行所需
要的时间比一个线程的进程执行两次所需要的时间要多一些。即采用多线程不会提高程
序的执行速度,反而会降低速度,但是对于用户来说,可以减少用户的响应时间。
上述结果只是针对单CPU,如果对于多CPU或者CPU采用超线程技术的话,采用多线程
技术还是会提高程序的执行速度的。因为单线程只会映射到一个CPU上,而多线程会映
射到多个CPU上,超线程技术本质是多线程硬件化,所以也会加快程序的执行速度。
- Windows多线程技术研究(二):多线程基本概念
- Windows多线程技术研究(一):引子
- Windows多线程技术研究(三):线程API
- 多线程入门教程(二)基本概念
- 多线程入门教程(二)基本概念
- Windows多线程技术研究(四):跨平台线程API
- Java多线程技术研究(二)-线程同步,通信及ThreadLocal
- Windows多线程基本概念
- 小字-多线程技术研究(一)
- windows多线程所涉及基本概念
- Windows多线程编程 [1] 基本概念
- windows多线程编程(二)
- Java多线程技术研究(三)-线程池
- 多线程(一)基本概念
- 多线程基本概念(1)
- 多线程基本概念
- 多线程基本概念
- 多线程基本概念
- 对java里面的字符编码的进一步了解
- 程序员生涯之我见 找到自己的兴趣所在
- Linux简史
- eclipse hot key
- 制作基于软盘的Linux系统
- Windows多线程技术研究(二):多线程基本概念
- VLAN技术白皮书
- 持久层数据存取技术
- 抄来的
- 如何制作软盘Linux
- Virtual LANs
- 为什么默认是google的搜索框输入关键词回车打开的是googl
- ldconfig命令的作用
- qt-3.1.2