关于线程问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 03:02:00
看了书本不是很理解。
不同进程CPU 可以分不同的时间片运行
但是多线程的并发运行感觉不是很理解
多线程是指同一进程的不同函数并发执行
这怎么可能??用什么技术达到啊?
在线等。。。。。。。
我看过linux 的线程方面的。。。一个是单线程的一个是双线程的时间刚好相差一半啊
在的CPU一般都是双核的
不知道单核的是不是也这样。。。。。
如果怎么理解应该和进程差不多?
也是分时间片运行
只是相对于进程,它们拥有系统分配相同同一进程的资源。。。
线程之间的切换应该比进程间的切换更快 ???

是不是这么理解?啊 。。。。。。
晕 啊

对,也是分时间片运行。

多线程其实和多进程差不多,只不过多线程的情况下,多个线程共享同一份系统资源,而多进程,每一个进程的资源都是独立的(google一下``虚拟地址'')。
对于linux,线程切换的开销和进程切换差不多,无论是线程和进程都是对应一个task_struct结构。

比如一个小程序,要计算两组方程组的值,那么双核的情况下,写两个线程,一个线程负责计算一组,因为是双核,相当于两个运算器,两个线程可以同时运行,当然比单个线程要节省时间,如果单线程同一时刻只能有一个核心在工作,不能把一个线程交给两个核心同时运行的。
对于单核cpu,两个线程可能比一个线程还慢,因为线程切换要消耗资源。

你可以看看候捷翻译的一本关于多线程的书,《Win32 多线程程序设计》。

建议看下这篇文章“深度下潜――多线程篇”http://dev.csdn.net/author/normalnotebook/9a49713838144283959f60429376ef73.html
看了之后,你应该有所收获。
更多文章请参考下面的链接

上面的回答太牛了,就是越看越晕。