如何在linux下验证两个线程是否并发执行的代码 如线程A与线程B

 我来答
匿名用户
2011-04-01
展开全部
线程。对于计算机微处理器而言,程序只是一组编译过的机器代码,可以执行相关的数据计算与操作,这些代码由一条条的指令组成,每一个代码组就是一条线程。
现有主流CPU为x86架构,每次只能执行一条线程,即单线程。单CPU系统中,在执行指令的时候,CPU先找出相应指令所在的内存位置,执行下一条指令,再转换到另一个位置,在同一时间内CPU只能对应一个指令。线程可以中断,并把中间结果暂存在另一个特殊位置(堆栈),不同的线程可以交叉运行,实现多任务,但每次运行的线程仍然仅有一条,千万不要把多任务和多线程混淆了。
既然一个CPU是单线程,那么两个CPU自然就可以双线程啦,如此类推,就会出现四路、八路系统。但双处理器系统的性能并不能达到单处理器的两倍,通常只有33%的性能增益。
为了提高CPU的性能,厂商通常采用增加工作频率和缓存容量的方法来提升速度,但这是治标不治本的方法,CPU只提高了速度,其内在潜力依然未能完全发挥,CPU的执行单元没有被充分利用,于是设计者就在CPU中加入两个逻辑处理单元,同时管理CPU的全部资源,直接提高CPU内核的工作效率。
超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,从而兼容多线程操作系统和软件,提高处理器的性能。操作系统或者应用软件的多线程可以同时运行于一个HTT处理器上,两个逻辑处理器共享一组处理器执行单元,并行完成加、乘、负载等操作。
如何提升工作效率
那么,超线程技术是如何提高CPU性能的呢?
我们知道,CPU由很多执行单元组成(如整数运算单元、浮点运算单元和存储单元),这些执行单元无法同时工作,大多数时间有一半执行单元是处于空闲状态。例如,MS Office等商业软件主要使用整数运算单元和读写/存储单元,几乎不涉及浮点运算单元,3D渲染软件主要使用浮点运算单元,很少涉及整数运算单元,很明显,这种设计造成了很大的浪费。如P4处理器内部有7个执行单元,每个时钟周期内,约有2个执行单元工作,它们共执行两次操作,那么,其他5个单元完全没有用到。
为了解决这个问题,高端电脑采用了ILP(Instruction Level Parallelism,指令级平行运算)技术,可以同时执行多条指令,提高单CPU的效率。而x86架构只能让多个CPU来执行不同的线程,不过硬件成本增加了不少,于是超线程技术处理器的出现正式兼容两者的优势。
传统处理器和支持超线程处理器在指令执行上的对比,参见^42030101a^1、^42030101b^2、^42030101c^3。
从上面的对比图可以看出:采用了超线程技术后,处理器真正并行执行多个线程,从而在同一频率和缓存的基础上实现了提高系统性能的技术变革。
超线程技术对商用和家用电脑而言,除了全面提升系统性能以外,还增加系统平台所能支持用户的数量,大幅降低系统的反应潜伏时间(因为任务能被分为几个隔离的线程来同时执行),增加系统的指令执行数量,还有一点很关键的是,即使对于现有的IA-32体系软件它也能很好地兼容。因为,HTT处理器还提供一个中断指令,在执行适合单处理器的任务时,暂停其中一个逻辑内核,让操作系统识别为单处理器,在执行适合多处理器的任务时,重新打开逻辑内核,利用HTT来增加整体效率。
软硬件支持与应用
支持超线程技术需软硬件的支持,硬件方面需要主板北桥芯片的支持。目前支持超线程技术的北桥有850E、845E、845G(B版本)、845GV、845GE、845PE,以及未来英特尔能支持到533MHz FSB的北桥都将支持超线程技术。支持400MHz FSB的北桥是不支持超线程技术的,支持超线程技术的处理器配合这样的北桥使用时,只能作为传统的处理器使用。
超线程技术还需要主板对CPU的电源支持,需要主板能提供给处理器高达70A的电流,否则系统可能不能长期稳定工作。除此之处还需要主板BIOS的支持,需要BIOS加入特定的支持HTT处理器的代码。当BIOS检测到是超线程处理器时,在BIOS设置菜单中出现CPU Hyper-Threading(Enabled or Disabled)的选项。
超线程技术还需要操作系统的支持。目前支持超线程技术的有Windows XP和Linux 2.4.X。这不同于传统的处理器安装的Windows XP,使用超线程技术的处理器安装完Windows XP后在设备管理器中能显示有两个处理器和ACPI Multiprocessor PC。
当然你的处理器必须支持超线程技术。从即将于下个月发布的3.06GHz P4开始,英特尔的处理器都将支持超线程技术。
这里笔者以QDI的P2E 333和P8 333这两款主板为例,它们的北桥芯片分别是英特尔845PE和845GE,支持533MHz FSB和DDR333,支持处理器超线程技术;主板的CPU供电电源模块符合英特尔Northwood FMB2标准,能提供70A的电流;在测试中使用超线程处理器3.06GHz P4 CPU(实验样品)开机后,进入BIOS中出现CPU Hyper-Threading的选项。
安装Windows XP后,设备管理器出现两个处理器和ACPI Multiprocessor PC,在任务管理器中出现两个CPU实时使用率的图标,如^42030101d^4:
笔者对开启和关闭CPU Hyper-Threading功能的测试中,发现启用超线程技术能使系统性能提高近20%左右。
另外,站长团上有产品团购,便宜有保证
bob12345cn
2011-03-28 · TA获得超过399个赞
知道小有建树答主
回答量:161
采纳率:0%
帮助的人:159万
展开全部
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
void* A(void* info){
printf("%s", (char*)info);
return 0;
}
void* B(void* info){
printf("%s", (char*)info);
printf("%s"," This is B thread.");
return 0;
}
int main(void){
pthread_t thread_a, thread_b;
pthread_create(&thread_a, NULL, A, "Hello");
pthread_create(&thread_b, NULL, B, " World");
pthread_join(thread_a, NULL);
pthread_join(thread_b, NULL);
return 0;
}

自己试试吧,线程做起来有一些难度,多读读posix关于线程的资料吧 .
可以做循环,然后配合命令诸如ps查看信息
另外此程序没有运行过,若需要,请自己运行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-03-28
展开全部
黑|精英技术网—很适合新手
吧|精英技术网—已有9年历史
安|精英技术网—入门教程多
全|精英技术网—by 神马
网|精英技术网--- 年代~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
taocb
2011-03-28
知道答主
回答量:36
采纳率:0%
帮助的人:17万
展开全部
PS下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式