摘要: 当一个线程调用函数fork的时候,整个进程地址空间会被拷贝到子进程中,在8.3节中有提到copy-on-write.子进程是一个与父进程完全不同的进程,但是如果父进程和子进程都没有对内存内容进行修改,那么该内存页就可以在父进程与子进程之间进行共享。 通过继承父进程的整个地址空间,子进程也会继承父进程每个互斥锁,读写锁以及条件变量的状态,如果父进程包含了多个线程,而且在fork函数返回之后并不... 阅读全文
posted @ 2016-07-02 19:54 U201013687 阅读(1277) 评论(0) 推荐(0) 编辑
摘要: 在基于进程模型的信号处理已经比较吗麻烦了,引入线程后事情就更加复杂了。 每个线程拥有其自身的信号掩码,但是信号处理函数是被进程内的所有线程共享的,作为一个推论,独立的线程能够阻塞信号,但是如果一个线程修改与给定信号的处理动作的时候,所有的线程都会共享这一修改。也就是说,如果一个线程选择忽略一个给定信号,其他的线程可能会通过恢复默认呢处理或者是安装信号处理函数的方式撤销线程所做的忽略选择。 ... 阅读全文
posted @ 2016-07-02 19:52 U201013687 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 还有两个线程属性并没有包含在pthread_attr_t结构中,它们是cancelability state以及cancelability type。这两个属性影响了线程对于函数调用pthread_cancel的相应行为。(11.5节) cancelability state属性可以取值PTHREAD_CANCEL_ENABLE或者是PTHREAD_CANCEL_DISABLE,线程可以调用... 阅读全文
posted @ 2016-07-02 19:51 U201013687 阅读(477) 评论(0) 推荐(0) 编辑
摘要: 在基于进程模型的信号处理已经比较吗麻烦了,引入线程后事情就更加复杂了。 每个线程拥有其自身的信号掩码,但是信号处理函数是被进程内的所有线程共享的,作为一个推论,独立的线程能够阻塞信号,但是如果一个线程修改与给定信号的处理动作的时候,所有的线程都会共享这一修改。也就是说,如果一个线程选择忽略一个给定信号,其他的线程可能会通过恢复默认呢处理或者是安装信号处理函数的方式撤销线程所做的忽略选择。 ... 阅读全文
posted @ 2016-07-02 19:51 U201013687 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 线程私有数据是一种用于存储和获取与特定线程相关联数据的机制,称为线程特定的或者是线程私有的,是因为我们希望每个线程都可以独立访问其独有的数据,而不用担心与其他线程的同步访问问题。 许多人费力实现了促进进程数据以及属性贡献的线程模型,那么为什么还有人想要实现一个接口,在这样一个模型中防止共享呢?有如下两点原因: 首先,有些时候我们需要以线程为基础维护一些数据,因为没有任何机制可以保证线程ID... 阅读全文
posted @ 2016-07-02 19:49 U201013687 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 我们在10.6节中讨论了可重入函数以及信号处理函数,线程与信号处理函数在重入方面是非常相似的。多线程的控制的本质也是同时调用相同的函数。 如果一个函数可以被多个线程同时安全地调用,我们称该函数为线程安全的(thread-safe).除了图12.9列出的函数之外,The Single Unix Specification定义的其他函数都是线程安全的,此外,ctermid以及tmpnam函数... 阅读全文
posted @ 2016-07-02 19:47 U201013687 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 12.4.1 互斥锁属性ExampleExample12.4.2 读写锁属性12.4.3 条件变量属性12.4.4 Barrier属性 12.4.1 互斥锁属性 互斥锁属性使用结构pthread_mutexattr_t结构进行存储,在11章中,我们使用PTHREAD_MUTEX_INITIALIZER常量或者是调用函数pthread_mutex_init并传参NULL指针来指定互斥锁属性的... 阅读全文
posted @ 2016-07-02 19:45 U201013687 阅读(322) 评论(0) 推荐(0) 编辑
摘要: pthread接口允许我们通过设置与不同对象相关联的属性来微调线程以及同步对象的行为。通常来说,管理这些属性的函数符合如下模式: 每一个对象都有与其相关联的属性对象类型(线程由线程属性,互斥锁由互斥锁属性,等等),一个属性对象可以表示多个属性。属性对象对于应用程序来说是不透明的,也就是说应用程序并支持获取属性对象内部结构,这能够促进应用程序的移植。取而代之的是,应用程序需要使用函数来对这些... 阅读全文
posted @ 2016-06-21 02:34 U201013687 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 我们已经在2.5.4节中讨论了函数sysconf,The Single Unix Specification定义了与线程操作相关的几个限制。与其他系统限制一样,线程限制也可以使用函数sysconf进行查询,图12.1总结了这些限制. 与其他使用sysconf获取到的系统限制一样,这些限制的应用是为了促进应用程序在不同操作系统实现上的可移植性,比如说,如果你的应用程序需要你为你所管理的每个文件... 阅读全文
posted @ 2016-06-21 02:34 U201013687 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 在11章中,我们已经学习了线程以及线程同步的基础知识。在本章中,我们将会学习控制线程行为的细节,我们将会看到线程属性,同步函数属性。这些概念在上一章中被默认行为代替了。 接下来还会介绍线程如何在同一进程内保存线程私有数据,然后将会以基于进程的系统调用对于线程的影响结束本章的学习。 来自为知笔记(Wiz) 阅读全文
posted @ 2016-06-21 02:33 U201013687 阅读(137) 评论(0) 推荐(0) 编辑