第12章线程控制总结

1 线程属性

线程属性:pthread_attr_t

int pthread_attr_init(pthread_attr_t *attr)
int pthread_attr_destroy(pthread_attr_t *attr)

 pthread_attr_init 为属性对象分配动态内存空间,pthread_attr_destroy将释放这些内存空间,并使用无效的值初始化属性对象,该属性对象如果再次被pthread_create调用将出错

线程属性:

typedef struct

{

  int  detachstate; 线程分离状态

  int schedpolicy; 线程调度策略

  struct schedparam schedparam; 线程调度参数

  int inheritsched; 线程继承性

  int scope; 线程作用域

  size_t guardsize; 线程栈末尾警戒缓冲区大小

  int stackaddr_set;

  void * stackaddr; 线程栈的位置

  size_t  stacksize; 线程栈的大小

} pthread_attr_t;

通过pthread_attr_getxxxx(pthread_attr_t *attr,int *val)形式的函数获取具体某个属性的值

通过pthread_attr_setxxxx(pthread_attr_t *attr,int val)形式的函数设置具体某个属性的值

2 同步属性

互斥量属性:pthread_mutexattr_t

int pthread_mutexattr_init(pthread_mutexattr_t *attr)
int prthread_mutexattr_destroy(pthread_mutexattr_t *attr)

 进程共享属性:

int pthread_mutexattr_getpshared(pthread_mutexattr_t *attr,int *pshared)
int pthread_mutexattr_setpshared(pthread_mutexattr_t *attr,int pshared)

 类型属性:

 互斥量类型属决定了互斥量的行为:

 PTHREAD_MUTEX_NORMAL:标准类型,不做特殊的错误检查或死锁检测

 PTHREAD_MUTEX_ERRORCHECK:提供错误检查(加锁再加锁、不占用解锁)

 PTHREAD_MUTEX_RECURSIVE:允许多次加锁,并提供错误检查(不占用解锁)

 PTHREAD_MUTEX_DEFAULT:linux将该类型映射到PTHREAD_MUTEX_NORML

int pthread_mutexattr_gettype(pthread_mutexattr_t *attr,int *type)
int pthread_mutexattr_settype(pthread_mutexattr_t *attr,int type)

读写锁属性:pthread_rwlockattr_t

int pthread_rwlockattr_init(pthread_rwlockattr_t *attr)
int pthread_rwlockattr_destroy(pthread_rwlockattr_t *attr)

int pthread_rwlockattr_getpshared(pthread_rwlockattr_t *attr,int *pshared)
int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *attr,int pshared)

条件变量属性:pthread_condattr_t

int pthread_condattr_init(pthread_condattr_t *attr)
int pthread_condattr_destroy(pthread_condattr_t *attr)

int pthread_condattr_getpshared(pthread_condattr_t *attr,int *pshared)
int pthread_condattr_setpshared(pthread_condattr_t *attr,int pshared)
时间: 2024-08-01 08:14:59

第12章线程控制总结的相关文章

apue学习笔记(第十二章 线程控制)

本章将讲解控制线程行为方面的详细内容,而前面的章节中使用的都是它们的默认行为 线程属性 pthread接口允许我们通过设置每个对象关联的不同属性来细调线程和同步对象的行为.管理这些属性的函数都遵循相同的模式:1.每个对象与自己类型的属性对象进行关联(线程与线程属性关联,互斥量与互斥量属性关联等)2.有一个初始化函数,把属性设置为默认值3.有一个销毁属性对象的函数4.每个属性都有一个从属性对象中获取属性值的函数5.每个属性都有一个设置属性值的函数 下面是线程属性pthread_attr_t的初始化

《APUE》读书笔记第十二章-线程控制

本章中,主要是介绍控制线程行为方面的内容,同时介绍了在同一进程中的多个线程之间如何保持数据的私有性以及基于进程的系统调用如何与线程进行交互. 一.线程属性 我们在创建线程的时候可以通过修改pthread_attr_t结构的值来修改线程的属性,将这些属性与创建的线程联系起来.调用pthread_attr_init以后,pthread_attr_t结构所包含的内容就是操作系统实现支持的线程所有属性. #include <pthread.h> int pthread_attr_init(pthrea

12.1 线程控制简介

在11章中,我们已经学习了线程以及线程同步的基础知识.在本章中,我们将会学习控制线程行为的细节,我们将会看到线程属性,同步函数属性.这些概念在上一章中被默认行为代替了. 接下来还会介绍线程如何在同一进程内保存线程私有数据,然后将会以基于进程的系统调用对于线程的影响结束本章的学习. 来自为知笔记(Wiz)

第10章 线程控制(2)_线程属性和线程优先级

3. 线程属性 3.1 线程属性结构体 (1)pthread_attr_t结构体 (2)线程属性初始化和销毁 头文件 #include <pthread.h> 函数 int pthread_attr _init(pthread_attr_t* attr); //初始化 int pthread_attr_destroy(pthread_attr_t* attr); //销毁 返回值 成功返回0,否则返回错误编号 3.2 设置和获取分离属性 头文件 #include <pthread.h&g

深入理解java虚拟机-第12章Java内存模型与线程

第12章 Java内存模型与线程 Java内存模型  主内存与工作内存: java内存模型规定了所有的变量都在主内存中,每条线程还有自己的工作内存. 工作内存中保存了该线程使用的主内存副本拷贝,线程对变量的所有操作都必须在工作内存中进行. 内存间交互操作: 1 lock 作用于主内存的变量,它把一个变量标识为一个线程独占的状态. 2 unlock 作用于主内存的变量,把锁定的变量释放出来 3 read 作用于工作内存的变量,把一个变量的值从主内存传输到线程的工作内存中. 4 load 作用于工作

第三章线程同步辅助类

Java 7 并发编程实战手册目录 代码下载(https://github.com/Wang-Jun-Chao/java-concurrency) 第三章线程同步辅助类 3.1简介 ?信号量(Semaphore):是一种计数器,用来保护一个或者多个共享资源的访问.它是并发编程的一种基础工具,大多数编程语言都提供了这个机制. ? CountDownLatch:是Java语言提供的同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许线程一直等待. ? CyclicBarrier也是Java语言

第一章线程管理

Java 7 并发编程实战手册目录 代码下载(https://github.com/Wang-Jun-Chao/java-concurrency) 第一章线程管理 1.1简介 在计算机领域中,我们说的并发(Concurrency)是指一系列任务的同时运行.如果一 台电脑有多个处理器或者有一个多核处理器,这个同时性(Simultaneity)是真正意义的并 发:但是一台电脑只有一个单核处理器,这个同时性并不是真正的并发 与并发相关的另一个概念是并行(Parallelism).与并发有不同的定义一样

《Cortex?-A系列编程者指南(V3.0)》第12章&lt;异常处理&gt;笔记

在本章,我们看看ARM处理器如何响应异常.异常是任何需要挂起正常执行转而运行与每个异常类型相关联软件(称为异常处理程序)的条件. 12.1 异常的类型 如我们在第四章看到,A系列和R系列架构支持七种处理器模式,六种特权模式(称为快速中断模式.外部中断模式.管理模式.中止模式.未定义模式和系统模式),一种非特权模式(用户模式).如果虚拟化扩展和安全扩展被实现,Hyp和Monitor模式可以被添加到列表.当前模式在软件控制下或处理一个异常时修改. 然而,非特权的用户模式只能通过产生一个异常来切换到另

第12章Swing编程

第12章Swing编程 Swing它采用100%java实现 不在依赖本地平台,所有平台都可以保持相同的运行效果,对跨平台支持比较出色  实现了MVC设计模式也称为Model-Delegate(模式-代理) 12.1 Swing概况 独立于本地平台的Swing(速度慢点)组件被称为轻量级组件,而依赖本地平台的AWT组件被称为重量级组件 12.2 Swing 基本组件的用法 12.2.1 Swing 组件层次 大部分Swing组件都是JComponent抽象类的直接或者间接子类,JComponen