摘要:
近在咫尺,却已在天涯——2010世界杯印象之矮脚虎日本队冯唐易老,李广难封——2010世界杯印象之五星巴西队 阅读全文
摘要:
Mutex Variables(互斥量), Mutex(互斥量)是“mutual exclusion”的缩写,互斥量最主要的用途是在多线程中对共享数据同时进行写操作时同步线程并保护数据; 互斥量在保护共享数据资源时可以把它想象成一把锁,在Pthreads库中互斥量最基本的设计思想是在任一时间只有一个线程可以锁定(或拥有)互斥量,因此,即使许多线程尝试去锁定一个互斥量时成功的只会有一个,只有在拥有互斥量的线程开锁后其它的线程才能锁定,就是说,线程必须排队访问被保护的数据。 阅读全文
摘要:
Pthreads整理资料如下: 什么是线程,我们为什么需要它?——Linux进程与线程概述;什么是Pthreads?为什么要用Pthreads?——Pthreads概述;如何创建和取消Pthreads线程?——POSIX线程的创建与取消—pthreads线程库实例笔记1;如何连接和分离Pthreads线程?——POSIX线程的连接和分离—pthreads线程库实例笔记2;何为互斥量?Pthreads库的互斥量又是如何使用的呢?——POSIX线程互斥量的使用——pthreads线程库实例笔记3;何为条件变量?Pthreads库的条件变量又是如何使用的呢?——POSIX线程库条件变量的使用——Pt 阅读全文
摘要:
什么是 Pthreads?
在过去,硬件提供商会去实现线程的硬件专用版本。这些线程的实现彼此会有很大的差异,所以会使得程序员开发可移植的线程应用程序非常困难;
为了充分利用线程的特性,我们需要一个标准的线程编程接口;
POSIX标准在不停的进化和修改,包括Pthreads的规范。它的最新版本是IEEE Std 1003.1,2004版本;
Pthreads库被定义为一系列的C语言程序类型和过程调用,是用一个pthreads.h的include头文件和一个线程库(尽管这个库是另一个库的一部分,就像libc一样)来实现的。 阅读全文
摘要:
为什么要用线程?
与标准 fork()相比,线程带来的开销很小。内核无需单独复制进程的内存空间或文件描述符等等。这就节省了大量的CPU时间,使得线程创建比新进程创建快上十到一百倍。因为这一点,可以大量使用线程而无需太过于担心带来的CPU 或内存不足。使用 fork() 时导致的大量 CPU占用也不复存在。这表示只要在程序中有意义,通常就可以创建线程。
当然,和进程一样,线程将利用多CPU。如果软件是针对多处理器系统设计的,这就真的是一大特性(如果软件是开放源码,则最终可能在不少平台上运行)。特定类型线程程序(尤其是CPU密集型程序)的性能将随系统中处理器的数目几乎线性地提高。如果正在编写CPU非常密集型的程序,则绝对想设法在代码中使用多线程。一旦掌握了线程编码,无需使用繁琐的IPC和其它复杂的通信机制,就能够以全新和创造性的方法解决编码难题。所有这些特性配合在一起使得多线程编程更有趣、快速和灵活。 阅读全文
摘要:
邓加,一个铁血男人,当球员时被称为铁后腰,作主帅时被认为铁手腕,在巴西国内联赛踢了7年的球,又分别在德国、意大利、日本踢了10年的球,日耳曼民族给他的血液和意志里注入了更多的金属元素;在意大利的科洛塞竞技场遐想困兽之斗时,悟出了意大利的防守反击精髓;之后,从大和民族的蚂蚁精神里感到人应该平凡团结而不张扬,于是有了2010踢防反的巴西,我们也曾惊艳于罗比、法比和卡卡的默契,然而,那只是作为球星的必要发挥而已,但是,邓加无罪,他虽铁血、铁腕、铁后腰,但他不是钢铁侠,他一个人拯救不了地球,当然也拯救不了巴西队,邓加就是邓加,他只是做了认为正确的事,他需要的尖锐的刀锋、稳固的盾,桑巴……,一边儿玩儿去吧…… 阅读全文
摘要:
线程连接(joining)和分离(detaching)函数:
* pthread_join(threadid,status)
* pthread_detach(threadid,status)
* pthread_attr_setdetachstate(attr,detachstate)
* pthread_attr_getdetachstate(attr,detachstate)
阅读全文
摘要:
创建线程
1. 起初,主程序main()包含了一个唯一的默认线程。程序员必须明确创建所有其它线程;
2. pthread_create创建一个新的线程并使其执行,这个过程可以在你的代码里的任何地方调用多次;
3. 一个进程可以创建的线程的最大数量是依赖于实现的(The maximum number of threads that may be created by a process is implementation dependent. )。
4. 线程一旦被创建,他们都是同等的,并且也可以创建其它线程。它们之间没有层次体系和依赖关系。
终止线程
1. 一个线程有几种终止的方法:
2. 线程从它的起始程序中返回;
* 线程调用了pthread_exit()函数;
* 线程被另一个线程调用pthread_cancel()函数所取消;
* 整个进程由于调用了exec或exit而退出。
3. pthread_exit经常被用来明确的退出一个线程。通常,pthread 阅读全文
摘要:
Daniel Robbins, 总裁兼 CEO, Gentoo Technologies, Inc.2000 年 9 月 01 日本文是 POSIX 线程三部曲系列的最后一部分,Daniel 将详细讨论如何使用条件变量。条件变量是 POSIX 线程结构,可以让您在遇到某些条件时“唤醒”线程。可以将它们看作是一种线程安全的信号发送。Daniel 使用目前您所学到的知识实现... 阅读全文
摘要:
POSIX 线程详解——一种支持内存共享的简捷工具Daniel Robbins (drobbins@gentoo.org), 总裁/CEO, Gentoo Technologies, Inc.2000 年 7 月 01 日POSIX(可移植操作系统接口)线程是提高代码响应和性能的有力手段。在本系列中,Daniel Robbins 向您精确地展示在编程中如何使用线程。其中... 阅读全文
摘要:
重构的两种定义,一种名词形式,一种是动词形式:
重构(名词):对软件内部结构的一种调整,目的是在不改变软件之可察行为前提下,提高其可理解性,降低其修改成本。
重构(动词):使用一系列重构准则(手法),在不改变软件之可察行为前提下,调整其结构。 阅读全文
摘要:
江城子——密州出猎 (宋)苏轼 老夫聊发少年狂,左牵黄,右擎苍。 锦帽貂裘,千骑卷平冈。 欲报倾城随太守,亲射虎,看孙郎。 酒酣胸胆尚开张,鬓微霜,又何妨!持节云中,何日遣冯唐? 会挽雕弓如满月,西北望,射天狼。
江城子——乙卯正月二十夜记梦 (宋)苏轼十年生死两茫茫,不思量,自难忘。千里孤坟,无处话凄凉。纵使相逢应不识,尘满面,鬓如霜。夜来幽梦忽还乡,小轩窗,正梳妆。相顾无言,惟有泪千行。料得年年断肠处,明月夜,短松冈。 阅读全文
摘要:
设计一个好程序库的要求之一就是彻底隔离接口和实现,C++的做法是通过构造、析构函数和成员函数:
* C++语言中将接口和实现分隔开的基本的方法之一就是采用构造函数和析构函数。构造函数本身提供了生成给定类对象的方法;析构函数则提供了与构造函数想法的行为。
* 成员函数能够防止用户访问那些他们不应该看到的类成员。 阅读全文
摘要:
我在因特网上看到这样一篇有关腰胯之轶事。先不辨文中轶事的真假,且信它腰胯的重要性。文中有一段内容是这样叙述的。近代太极拳重要人物杨露禅,教了吴全佑功夫,是为吴氏太极拳之始,后来杨露禅告老回乡,吴全佑尾随不舍,杨便下轿对他说:“我当天发誓,全部功夫都已教你,没有一招留下,总之你记住‘圈内打人,圈外推人’便是。”所谓圈内即盆骨发力范围,所谓圈外即盆骨发力... 阅读全文
摘要:
本章箴言:如果你发现自己需要为程序添加一个特性,而代码结构是你无法很方便地那么做,那就先重构那个程序,使特性的添加比较容易进行,然后再添加特性。重构之前,首先检查自己是否有一套可靠的测试机制。这些测试必须有自我检验(self-checking)能力。重构技术以微小的步法修改程序。如果你犯下错误,很容易便可发现它。任何一个傻瓜都能写出计算机可以理解的代码。惟有写出人类容易理解的代码,才是优秀的程序员... 阅读全文