1. 基本概念

一个Unix进程可以理解为一个线程加上地址空间、文件描述符和其他数据。
异步表明事情相互独立发生, 除非有强加的依赖性。

并发指实际可能是穿行发生的事情好像同时发生一样。
并行指并发序列同时执行。

线程安全是指代码能够被多个线程调用而不会产生灾难性后果。

2. 共享数据——同步对象——互斥量——条件变量的关系

基本的pthread同步模型使用互斥量来保护共享数据、使用条件变量来通信。互斥量允许线程在访问共享数据时候锁定它,条件变量允许线程等待共享数据达到某个期望的状态。

互斥量阻止线程间发生不可预期的冲突。
条件变量让线程等待知道可以安全的执行。
互斥量和条件变量都是用来同步线程间操作的。

3. 常见结构

线程系统的三个基本要素:执行环境、调度、同步pthread_t 线程标示符
pthread_mutex_t 互斥量
pthread_code_t 条件变量
pthread_key_t 线程私有权握访问键
pthread_attr_t 线程属性对象
pthread_condattr_t 条件变量属性对象

4. pthread特性

pthread函数有错时不会设置errno变量。
pthread中没有想perror一样按给定格式打印错误信息的函数,它使用strerror函数获得错误代码的描述然后打印到stderr中

posix thread概述的更多相关文章

  1. posix thread概述(示例代码)

    一个简单的alarm实例 errors.h头文件 #ifndef __ERRORS_H #define __ERORRS_H #include<stdio.h> #include<u ...

  2. posix thread 浅谈

    用Posix thread进行多线程设计,就不怕跨平台了,因为很多OS都兼容Posix thread,如Linux/Windows等,甚至嵌入式系统上(如rt-thread)都支持posix thre ...

  3. Avoiding memory leaks in POSIX thread programming, 多线程避免内存泄漏

    默认创建的线程为joinable的,必须调用pthread_join()才可以释放所占的内存 创建分离线程detach, attr 线程函数运行结束,调用pthread_exit 其它线程调用pthr ...

  4. posix thread条件变量

    概述 等待条件变量总是返回锁住的互斥量. 条件变量的作用是发送信号,而不是互斥. 与条件变量相关的共享数据是“谓词”,如队列满或队列空条件. 一个条件变量应该与一个谓词相关.如果一个条件变量与多个谓词 ...

  5. posix thread内存可视性

    线程间的内存可视性 当线程调用怕thread——create时, 它所能看到的内存值也是它建立的线程能够看到的.任何在调用怕thread_create之后写入的数据,可能不会被建立的线程看到,即使写操 ...

  6. posix thread互斥量

    互斥量 互斥量(Mutex)是“mutual exclusion”的缩写.互斥量是实现线程同步,和保护同时写共享数据的主要方法.使用互斥量的典型顺序如下:1. 创建和初始一个互斥量 2. 多个线程尝试 ...

  7. POSIX多线程—概述

    作者:阿波链接:http://blog.csdn.net/livelylittlefish/article/details/7918110 (整半年没有更新,发几篇以前的读书笔记.) Content ...

  8. posix thread API列表

    互斥量: pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;int pthread_mutex_init(pthread_mutex_t *mutex ...

  9. posix thread线程

    1. pthread线程通过调用你提供的某些函数开始.这个“线程函数”应该只有一个void*型参数,并返回系统的类型.2. 通过向pthread_create函数传递线程函数的地址和线程函数调用的参数 ...

随机推荐

  1. HDU 5634 Rikka with Phi 线段树

    题意:bc round 73 div1 D 中文题面 分析:注意到10^7之内的数最多phi O(log(n))次就会变成1, 因此可以考虑把一段相同的不为1的数缩成一个点,用平衡树来维护. 每次求p ...

  2. uvalive 4973 Ardenia

    题意:给出空间两条线段,求距离. 注意输出格式! #include<cstdio> #include<cmath> #include<algorithm> usin ...

  3. dateline 在数据库中就是 整型字段。date函数是可以转换成可读日期的。

    返回数据中的dateline全部用date()函数转换后再返回,是要嵌套循环还是遍历,代码怎么写? //查询我的活动 function user_activity_info_by_uid($uid){ ...

  4. 【转载】/etc/passwd & /etc/shadow 详解

    转载自:http://blog.csdn.net/snlying/article/details/6130468 1,passwd文件passwd文件存放在/etc目录下.这个文件存放着所有用户帐号的 ...

  5. OpenCV2.3.1中tbb_debug.dll is missing的解决办法

    方法1:        将\opencv\build\common\tbb\ia32目录下的tbb.dll复制改名为tbb_debug.dll  方法2:        若方法1失效,请将\openc ...

  6. linux oracle10g安装

    同样适合11g哦,亲; 一.安装系统 首先安装Linux系统,根据Oracle官方文档的建议,在机器内存小于1G的情况下,swap分区大小应该设置为内存的2倍大,若内存大于2G则swap分区设置为与内 ...

  7. AlertDialog

    1.AlertDialog点击时不自动消失 //在setPositiveButton和setNegativeButton根据自己的逻辑处理,大概代码如下 if(validate){//验证通过自动消失 ...

  8. A Tour of Go Map literals

    Map literals are like struct literals, but the keys are required. package main import "fmt" ...

  9. [iOS基础控件 - 6.0] UITableView

    A.需要掌握的 1.基本属性和方法 设置UITableView的dataSource.delegate UITableView多组数据和单组数据的展示 UITableViewCell的常见属性 UIT ...

  10. JavaScript一道面试题求y的值是? z 的值是? s的值是?

    原文:http://www.zhufengpeixun.cn/JavaScriptmianshiti/2014-04-01/287.html < script type = "text ...