自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

转载 为什么微处理器要从单核转向多核?

作者 赵军 自从英特尔在2005年推出了第一代双核处理器之后,我们经常会被用户问到这个问题,为什么微处理要从单核转向多核?计算机上不断涌现的新兴使用模式让最终用户对处理器的处理能力——即性能——提出了更高的要求,并且对性能每年提高的幅度还在不断加速,而多核技术是目前行之有效的方法。图注:如何将处理器性能提高10倍——采用多核技术 为什么不能用单核的设计达到用户对处理器性能

2007-06-28 21:06:00 4060 1

转载 多核出现的必然性

作者 杜江凌 上回讲了摩尔定律的正宗说法,是集成电路上的晶体管数目会以大约每两年翻一番的速度增长。这越来越多的晶体管究竟对广大用户有什么意义?我们都知道现在的电脑比多年以前的功能强大多了,差不多二十多来年电脑的性能一直是跟主频挂钩的,主频越高,性能越高。原因是芯片上的晶体管一代比一代多,就能做得更精细,执行指令的节拍(也就是主频)更快。但电路越复杂,消耗的电能就越多,所以散热问题就

2007-06-28 20:55:00 3358

转载 Linux下多线程编程与信号处理易疏忽的一个例子

这几天把一个网络流量采集器程序基本改好了,原来在main函数中把几个子线程启动后就睡10分钟后开始清理子线程后退出。现在想改成子线程启动后主线程进入无限睡眠,直到收到SIGTERM或SIGINT。主程序如下:其他头文件#include //信号处理所需要的头文件int main(int argc, char * argv[]){  //其他所需要的变量声明     sigset_t sig_se

2007-06-28 16:53:00 5290

转载 Linux多线程编程和Linux 2.6下的NPTL

这几天由于工作需要,琢磨了一下Linux下的多线程的相关资料。Linux下最常用的多线程支持库为Pthread库,它是glibc库的组成部分。但是关于Pthread的说明文档非常缺乏,特别是对POSIX多线程规范的介绍以及pthread库中多线程实现方式的介绍实在是少之又少。而多线程编程对于系统程序员而言是必须掌握的技术,因此总是让学习中的程序员觉得头痛不以。我自己也没有太多多线程编程的经验,在这

2007-06-28 16:47:00 7097 1

转载 多线程编程——实战篇(二)

  本节继续上一节的讨论。  [一个线程在进入对象的休息室(调用该对象的wait()方法)后会释放对该对象的锁],基于这个原因。在同步中,除非必要,否则你不应用使用Thread.sleep(long l)方法,因为sleep方法并不释放对象的锁。  这是一个极其恶劣的品德,你自己什么事也不干,进入sleep状态,却抓住竞争对象的监视锁不让其它需要该对象监视锁的线程运行,简单说是极端自私的一

2007-06-28 16:38:00 5286 1

转载 多线程编程——实战篇(一)

  在进入实战篇以前,我们简单说一下多线程编程的一般原则。  [安全性]是多线程编程的首要原则,如果两个以上的线程访问同一对象时,一个线程会损坏另一个线程的数据,这就是违反了安全性原则,这样的程序是不能进入实际应用的。  安全性的保证可以通过设计安全的类和程序员的手工控制。如果多个线程对同一对象访问不会危及安全性,这样的类就是线程安全的类,在JAVA中比如String类就被设计为线程安全的

2007-06-28 15:57:00 6180

转载 多线程编程 基础篇 (四)

[wait(),notify()/notityAll()方法]  关于这两个方法,有很多的内容需要说明.在下面的说明中可能会有很多地方不能一下子明白,但在看完本节后,即使不能完全明白,你也一定要回过头来记住下面的两句话:  [wait(),notify()/notityAll()方法是普通对象的方法(Object超类中实现),而不是线程对象的方法]  [wait(),notify()/

2007-06-28 15:55:00 5239

转载 多线程编程——基础篇 (三)

  线程对象的几个重要的方法  尽管线程对象的常用方法可以通过API文档来了解,但是有很多方法仅仅从API说明是无法详细了解的。  本来打算用一节的篇幅来把线程方法中一些重要的知识说完,但这样下来估计要很常的篇幅,可能要用好几节才能说把和线程方法相关的一些重要的知识说完。  首先我们接基础篇(二)来说明start()方法。  一个线程对象生成后,如果要产生一个执行的线程,就一定要调

2007-06-28 15:20:00 6401 1

转载 多线程编程——基础篇 (二)

  在进入java平台的线程对象之前,基于基础篇(一)的一些问题,我先插入两个基本概念。[线程的并发与并行]  在单CPU系统中,系统调度在某一时刻只能让一个线程运行,虽然这种调试机制有多种形式(大多数是时间片轮巡为主),但无论如何,要通过不断切换需要运行的线程让其运行的方式就叫并发(concurrent)。而在多CPU系统中,可以让两个以上的线程同时运行,这种可以同时让两个以上线程同时运

2007-06-28 15:15:00 8665 4

转载 多线程编程——基础篇 (一)

  [写在前面]  随着计算机技术的发展,编程模型也越来越复杂多样化。但多线程编程模型是目前计算机系统架构的最终模型。随着CPU主频的不断攀升,X86架构的硬件已经成为瓶,在这种架构的CPU主频最高为4G。事实上目前3.6G主频的CPU已经接近了顶峰。  如果不能从根本上更新当前CPU的架构(在很长一段时间内还不太可能),那么继续提高CPU性能的方法就是超线程CPU模式。那么,作业系统、应

2007-06-28 15:11:00 30733 7

转载 Linux系统下的多线程编程入门四

  3、条件变量  前一节中我们讲述了如何使用互斥锁来实现线程间数据的共享和通信,互斥锁一个明显的缺点是它只有两种状态:锁定和非锁定。而条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足,它常和互斥锁一起使用。使用时,条件变量被用来阻塞一个线程,当条件不满足时,线程往往解开相应的互斥锁并等待条件发生变化。一旦其它的某个线程改变了条件变量,它将通知相应的条件变量唤醒一个或多

2007-06-28 15:09:00 5262 1

转载 Linux系统下的多线程编程入门三

  线程的数据处理  和进程相比,线程的最大优点之一是数据的共享性,各个进程共享父进程处沿袭的数据段,可以方便的获得、修改数据。但这也给多线程编程带来了许多问题。我们必须当心有多个不同的进程访问相同的变量。许多函数是不可重入的,即同时不能运行一个函数的多个拷贝(除非使用不同的数据段)。在函数中声明的静态变量常常带来问题,函数的返回值也会有问题。因为如果返回的是函数内部静态声明的空间的地址,则在

2007-06-28 15:07:00 4651

转载 Linux系统下的多线程编程入门二

  修改线程的属性  在上一节的例子里,我们用pthread_create函数创建了一个线程,在这个线程中,我们使用了默认参数,即将该函数的第二个参数设为NULL。的确,对大多数程序来说,使用默认属性就够了,但我们还是有必要来了解一下线程的有关属性。  属性结构为pthread_attr_t,它同样在头文件/usr/include/pthread.h中定义,喜欢追根问底的人可以自己去查看。

2007-06-28 15:05:00 5400

转载 Linux系统下的多线程编程入门一

  引言  线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期, solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。  为什么有了进程的概念后,还要再引入线程呢?使

2007-06-28 14:59:00 8006 2

转载 Windows下多线程编程技术及其实现

  本文首先讨论16位Windows下不具备的线程的概念,然后着重讲述在32位Windows 95环境下多线程的编程技术,最后给出利用该技术的一个实例,即基于Windows95下TCP/IP的可视电话的实现。   一、问题的提出   作者最近在开发基于Internet网上的可视电话过程中,碰到了这样一个问题。在基于Internet网上的可视电话系统中,同时要进行语音采集、语音编解码、图象采

2007-06-28 14:56:00 3583

转载 多线程编程之四——线程的同步

作者:韩耀旭八、线程的同步  虽然多线程能给我们带来好处,但是也有不少问题需要解决。例如,对于像磁盘驱动器这样独占性系统资源,由于线程可以执行进程的任何代码段,且线程的运行是由系统调度自动完成的,具有一定的不确定性,因此就有可能出现两个线程同时对磁盘驱动器进行操作,从而出现操作错误;又例如,对于银行系统的计算机来说,可能使用一个线程来更新其用户数据库,而用另外一个线程来读取数据库以响应储户

2007-06-28 14:54:00 2736

转载 多线程编程之三——线程间通讯

作者:韩耀旭七、线程间通讯  一般而言,应用程序中的一个次要线程总是为主线程执行特定的任务,这样,主线程和次要线程间必定有一个信息传递的渠道,也就是主线程和次要线程间要进行通信。这种线程间的通信不但是难以避免的,而且在多线程编程中也是复杂和频繁的,下面将进行说明。 使用全局变量进行通信由于属于同一个进程的各个线程共享操作系统分配该进程的资源,故解决线程间通信最简单的一种方法

2007-06-28 14:52:00 3224

转载 多线程编程之二——MFC中的多线程开发

五、MFC对多线程编程的支持  MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。  工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等。但对于Win32的API编程而言

2007-06-28 14:44:00 2841

转载 多线程编程之一——问题提出

 一、问题的提出编写一个耗时的单线程程序:  新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下: void CSingleThreadDlg::OnSleepSixSecond() { Sleep(600

2007-06-28 14:41:00 2946

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除