上一页 1 ··· 22 23 24 25 26 27 28 29 30 ··· 59 下一页
摘要: 线程私有数据(也称线程特定数据)是存储和查询与某个线程相关的数据的一种机制。把这种数据称为线程私有数据或线程特定数据的原因是:希望每个线程可以独立地访问数据副本,而不需要担心与其他线程的同步访问问题。 线程模型促进了进程中数据和属性的共享,许多人在设计线程模型时会遇到各种麻烦。但在这样的模型中,为什么还需要提出一些合适的用于阻止共享的接口呢?其中有两个原因: 第一,有时候需要维护基于每个线程的... 阅读全文
posted @ 2014-02-06 18:09 ITtecman 阅读(3710) 评论(0) 推荐(0) 编辑
摘要: 有了信号处理程序和线程,多个控制线程在同一时间可能潜在地调用同一个函数。 如果一个函数在同一时刻可以被多个线程安全地调用,就称该函数是线程安全的。在Single UNIX Specification中定义的所有函数,除了表12-5中列出的函数以外,其他函数都保证是线程安全的。另外,ctermid和tmpnam函数在参数传入空指针时并不能保证是线程安全的。类似地,wcrtomb和wcsrtombs... 阅读全文
posted @ 2014-02-04 20:53 ITtecman 阅读(1544) 评论(0) 推荐(0) 编辑
摘要: 就像线程具有属性一样,线程的同步对象(如互斥量、读写锁、条件变量、自旋锁和屏障)也有属性。http://www.cnblogs.com/nufangrensheng/p/3521654.html中介绍了自旋锁的唯一的一个属性,本篇介绍互斥量、读写锁、条件变量及屏障的属性。 1、互斥量属性 用pthread_mutexattr_init初始化pthread_mutexattr_t结构,用pthr... 阅读全文
posted @ 2014-01-17 10:30 ITtecman 阅读(1312) 评论(0) 推荐(0) 编辑
摘要: http://www.cnblogs.com/nufangrensheng/p/3518411.html中介绍了pthread_create函数,并且当时的例子中,传入的参数都是空指针,而不是指向pthread_attr_t结构的指针。可以使用pthread_attr_t结构修改线程默认属性,并把这些属性与创建的线程联系起来。可以使用pthread_attr_init函数初始化pthread_at... 阅读全文
posted @ 2014-01-16 15:17 ITtecman 阅读(2444) 评论(0) 推荐(1) 编辑
摘要: 在http://www.cnblogs.com/nufangrensheng/p/3496323.html中讨论了sysconf函数,Single UNIX Specification定义了与线程操作有关的一些限制。与其他的系统限制一样,这些线程限制也可以通过sysconf函数进行查询。表12-1总结了这些限制。 表12-1 线程限制和sysconf的name参数 ... 阅读全文
posted @ 2014-01-16 15:15 ITtecman 阅读(1974) 评论(0) 推荐(0) 编辑
摘要: 前言 当多个控制线程共享相同的内存时,需要确保每个线程看到一致的数据视图。如果每个线程使用的变量都是其他线程不会读取或修改的,那么就不会存在一致性问题。同样地,如果变量是只读的,多个线程同时读取该变量也不会有一致性问题。但是,当某个线程可以修改变量,而其他线程也可以读取或修改这个变量的时候,就需要对这些线程进行同步,以确保它们在访问变量的存储内容时不会访问到无效的数值。 当一个线程修改变量时,... 阅读全文
posted @ 2014-01-15 22:31 ITtecman 阅读(24603) 评论(1) 推荐(4) 编辑
摘要: 如果进程中的任一线程调用了exit、_Exit或者_exit,那么整个进程就会终止。与此类似,如果信号的默认动作是终止进程,那么,把该信号发送到线程会终止整个进程。 单个线程可以通过下列三种方式退出,在不终止整个进程的情况下停止它的控制流。 (1)线程只是从启动例程中返回,返回值是线程的退出码。 (2)线程可以被同一进程中的其他线程取消。 (3)线程调用pthread_exit。 ... 阅读全文
posted @ 2014-01-14 15:49 ITtecman 阅读(1862) 评论(0) 推荐(0) 编辑
摘要: 在传统的UNIX进程模型中,每个进程只有一个控制线程。从概念上讲,这与基于线程的模型中只包含一个线程是相同的。在POSIX线程(pthread)的情况下,程序开始运行时,它也是以单进程中的单个控制线程启动的,在创建多个控制线程以前,程序的行为与传统的进程并没有什么区别。新增的线程可以通过调用pthread_create函数创建。#include int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*st... 阅读全文
posted @ 2014-01-14 09:37 ITtecman 阅读(1136) 评论(0) 推荐(0) 编辑
摘要: 就像每个进程有一个进程ID一样,每个线程也有一个线程ID。进程ID在整个系统中是唯一的,但线程ID不同,线程ID只在它所属的进程环境中有效。 进程ID,用pid_t数据类型来表示,是一个非负整数。线程ID则用pthread_t数据类型来表示,实现的时候可以用一个结构来代表pthread_t数据类型,所以可移植的操作系统实现不能把它作为整数处理。因此必须使用函数来对两个线程ID进行比较。 ... 阅读全文
posted @ 2014-01-13 22:12 ITtecman 阅读(1896) 评论(0) 推荐(0) 编辑
摘要: 典型的UNIX进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程(或简称为线程)以后,在程序设计时可以把进程设计成在同一时刻能够做不止一件事,每个线程处理各自独立的任务。这种方法有很多好处: 通过为每种事件类型的处理分配单独的线程,能够简化处理异步事件的代码。每个线程在进行事件处理时可以采用同步编程模式,同步编程模式要比异步编程模式简单得多。 多个进程必须... 阅读全文
posted @ 2014-01-13 21:58 ITtecman 阅读(456) 评论(0) 推荐(0) 编辑
上一页 1 ··· 22 23 24 25 26 27 28 29 30 ··· 59 下一页