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. vector(相对线程安全) arryList(线程不安全)

    1.什么是线程安全? 如果说某个集合是线程安全的,那么我们就不用考虑并发访问这个集合?(需要定义自己百度,但是很难懂) 2.深入jvm中的线程安全的级别. a不变模式(String等基本类型) b.绝 ...

  2. [原]Links

    [Date]2014-04-19 [Author]wintys (wintys@gmail.com) http://wintys.cnblogs.com [Content]: 1.Android 1. ...

  3. git ssh key for github

    第一:检查.ssh是否存在(ls -al ~/.ssh) $ ls -al ~/.ssh Lists the files in your .ssh directory, if they exist 第 ...

  4. Linux 中/etc/profile、~/.bash_profile 等几个环境配置文件的执行过程

    环境变量是和Shell紧密相关的,用户登录系统后就启动了一个Shell.对于Linux来说一般是bash,但也可以重新设定或切换到其它的 Shell.对于UNIX,可能是CShelll.环境变量是通过 ...

  5. Mongodb集群部署ReplicaSet+Sharding -摘自网络

    网上关于三种集群方式的搭建方式很多,都是分开来介绍的.Replica Set (复制集成)主要是做主从库的,但是没法实现负载均衡的效果,真正实现这个的,是Sharding(分片集群),通过数据分布在每 ...

  6. 在windows2012&2008中设置防火墙允许filezilla的passive模式

    添加入战规则, 允许程序和服务 "filezilla" 被连接 只允许21端口通过防火墙是不够的.

  7. Fragment回调顺序及getActivity()为NullPointerException解决方法

    Fragment回调顺序 onAttach->onCreate->onCreateView->onActivityCreated ps:最后发现经常在Fragment里面getAct ...

  8. [Objective-c 基础 - 3.3] @property属性详解

    ARC     自动引用计数 ARC不是垃圾回收,而是编译器自动插入代码来减少程序员的代码输入和失误.     同时比垃圾和效率要高,因为其不影响运行时间,相当于自己管理内存.     总是通过属性来 ...

  9. iOS中几种定时器 - 控制了时间,就控制了一切

    在软件开发过程中,我们常常需要在某个时间后执行某个方法,或者是按照某个周期一直执行某个方法.在这个时候,我们就需要用到定时器. 然而,在iOS中有很多方法完成以上的任务,到底有多少种方法呢?经过查阅资 ...

  10. jquery.validate.js 应用示例

    今天发现了jQuery一个很强大的验证表单插件(jquery.validate.js 下载地址:http://bassistance.de/jquery-plugins/jquery-plugin-v ...