2007年09月12日
本次博客发布大赛活动,您只要了解Solaris知识,了解Solaris涉及到的开发或应用,并在活动网页上注册参赛信息和参赛文章,就能完成活动参与。我们将在所有参与活动的记录中,评选每周五位最佳奖和五位终极大奖。获奖者名单以及所获的奖品,将在博客发布大赛网页上予以公布。阅读全文>
发表于 @ 2007年09月12日 14:02:00|评论(loading...)|编辑
2007年06月28日
自从英特尔在2005年推出了第一代双核处理器之后,我们经常会被用户问到这个问题,为什么微处理要从单核转向多核?计算机上不断涌现的新兴使用模式让最终用户对处理器的处理能力——即性能——提出了更高的要求,并且对性能每年提高的幅度还在不断加速,而多核技术是目前行之有效的方法。阅读全文>
发表于 @ 2007年06月28日 21:06:00|评论(loading...)|编辑
上回讲了摩尔定律的正宗说法,是集成电路上的晶体管数目会以大约每两年翻一番的速度增长。这越来越多的晶体管究竟对广大用户有什么意义?
阅读全文>
发表于 @ 2007年06月28日 20:55:00|评论(loading...)|编辑
这几天把一个网络流量采集器程序基本改好了,原来在main函数中把几个子线程启动后就睡10分钟后开始清理子线程后退出。现在想改成子线程启动后主线程进入无限睡眠,直到收到SIGTERM或SIGINT。主程序如下阅读全文>
发表于 @ 2007年06月28日 16:53:00|评论(loading...)|编辑
这几天由于工作需要,琢磨了一下Linux下的多线程的相关资料。Linux下最常用的多线程支持库为Pthread库,它是glibc库的组成部分。但是关于Pthread的说明文档非常缺乏,特别是对POSIX多线程规范的介绍以及pthread库中多线程实现方式的介绍实在是少之又少。而多线程编程对于系统程序员而言是必须掌握的技术,因此总是让学习中的程序员觉得头痛不以。我自己也没有太多多线程编程的经验,在这里只是把自己收集到的一些关于Linux上多线程还算新的资料进行汇总来抛砖引玉,以便相互学习交流。阅读全文>
发表于 @ 2007年06月28日 16:47:00|评论(loading...)|编辑
[一个线程在进入对象的休息室(调用该对象的wait()方法)后会释放对该对象的锁],基于这个原因。在同步中,除非必要,否则你不应用使用Thread.sleep(long l)方法,因为sleep方法并不释放对象的锁。
这是一个极其恶劣的品德,你自己什么事也不干,进入sleep状态,却抓住竞争对象的监视锁不让其它需要该对象监视锁的线程运行,简单说是极端自私的一种行为。但我看到过很多程序员仍然有在同步方法中调用sleep的代码。阅读全文>
发表于 @ 2007年06月28日 16:38:00|评论(loading...)|编辑
多个线程同时操作某一对象时,一个线程对该对象的操作可能会改变其状态,而该状态会影响另一线程对该对象的真正结果.
阅读全文>
发表于 @ 2007年06月28日 15:55:00|评论(loading...)|编辑
尽管线程对象的常用方法可以通过API文档来了解,但是有很多方法仅仅从API说明是无法详细了解的。
本来打算用一节的篇幅来把线程方法中一些重要的知识说完,但这样下来估计要很常的篇幅,可能要用好几节才能说把和线程方法相关的一些重要的知识说完。阅读全文>
发表于 @ 2007年06月28日 15:20:00|评论(loading...)|编辑
在前面已经说过,线程对象和线程是两个完全不同的概念。这里我们再次深入一下,生成一个线程的实例,并不代表启动了线程。而启动线程是说在某个线程对象上启动了该实例对应的线程,当该线程结束后,并不会就立即消失。
阅读全文>
发表于 @ 2007年06月28日 15:15:00|评论(loading...)|编辑
随着计算机技术的发展,编程模型也越来越复杂多样化。但多线程编程模型是目前计算机系统架构的最终模型。随着CPU主频的不断攀升,X86架构的硬件已经成为瓶,在这种架构的CPU主频最高为4G。事实上目前3.6G主频的CPU已经接近了顶峰。阅读全文>
发表于 @ 2007年06月28日 15:11:00|评论(loading...)|编辑
前一节中我们讲述了如何使用互斥锁来实现线程间数据的共享和通信,互斥锁一个明显的缺点是它只有两种状态:锁定和非锁定。而条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足,它常和互斥锁一起使用。阅读全文>
发表于 @ 2007年06月28日 15:09:00|评论(loading...)|编辑
和进程相比,线程的最大优点之一是数据的共享性,各个进程共享父进程处沿袭的数据段,可以方便的获得、修改数据。但这也给多线程编程带来了许多问题。我们必须当心有多个不同的进程访问相同的变量。许多函数是不可重入的,即同时不能运行一个函数的多个拷贝(除非使用不同的数据段)。在函数中声明的静态变量常常带来问题,函数的返回值也会有问题。阅读全文>
发表于 @ 2007年06月28日 15:07:00|评论(loading...)|编辑
在上一节的例子里,我们用pthread_create函数创建了一个线程,在这个线程中,我们使用了默认参数,即将该函数的第二个参数设为NULL。的确,对大多数程序来说,使用默认属性就够了,但我们还是有必要来了解一下线程的有关属性。
阅读全文>
发表于 @ 2007年06月28日 15:05:00|评论(loading...)|编辑
为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?什么的系统应该选用多线程?我们首先必须回答这些问题。
阅读全文>
发表于 @ 2007年06月28日 14:59:00|评论(loading...)|编辑