POSIX 线程,也被称为Pthreads,是一个线程的POSIX标准;

pthread.h

int pthread_create(pthread_t * thread,
pthread_attr_t const *attr,
void *(*start_routine)(void*),
void *arg);
thread: 新线程句柄
attr: 新线程属性
start_routine: 线程启动程序
arg:线程启动程序参数

int pthread_join(pthread_t thread, void **ret_val);

thread: 从pthread_create 返回的句柄
ret_val: 获取返回值

互斥锁
1、初始化互斥锁
int pthread_mutex_init(pthread_mutex_t * mutex, const pthread_mutexattr_t *attr);
mutex: 一个指向要初始化的互斥变量的指针
attr: 一个指向为互斥所定义属性的结构体
默认不提供attr可以使用:mutex = PTHERAD_MUTEX_INITIALIZER;

2、锁定互斥锁
int pthread_mutex_lock(pthread_mutex_t *mutex);

3、解锁互斥锁
int pthread_mutex_unlock(pthread_mutex_t *mutex);

4、销毁互斥锁
int pthread_mutex_destroy(pthread_mutex_t *mutex);

信号量
semaphore.h

1、初始化信号量
extern int sem_init(sem_t *sem, int pshared, unsigned int value);
sem 要初始化的信号量指针;
pshared 共享标志;
value 初始值;

2、锁定信号量
extern int sem_wait(sem_t *sem);

3、解锁信号量
extern int sem_post(sem_t *sem);

4、销毁信号量
extern int sem_destroy(sem_t *sem);

POSIX线程调度策略
sched.h
SCHED_FIFO:先进先出
SCHED_RR:循环轮转调度
1、通过设置pthread_attr_t的sched_policy域在pthread_create时定义
2、在运行时定义:
int pthread_setschedparam(pthread_t thid, int poilcy, struct sched_param const *param);

POSIX线程优先级
1、通过设置pthread_attr_t的sched_prority域在pthread_create时定义
2、在运行时定义:
pthread_setschedparam 的sched_param结构体中提供优先级

优先级的最大值和最小值根据调度策略而定,可以使用sched_get_priority_max和sched_get_priority_min获取

参考:《Android C++高级编程》

PThread 学习笔记的更多相关文章

  1. 操作系统学习笔记----进程/线程模型----Coursera课程笔记

    操作系统学习笔记----进程/线程模型----Coursera课程笔记 进程/线程模型 0. 概述 0.1 进程模型 多道程序设计 进程的概念.进程控制块 进程状态及转换.进程队列 进程控制----进 ...

  2. pthread_cond_wait学习笔记

    pthread_cond_wait学习笔记 近期学习了线程等待和激活的相关知识. 先介绍几个api: pthread_cond_t表示多线程的条件变量,用于控制线程等待和就绪的条件. 一:条件变量的初 ...

  3. gPRC学习笔记

    gPRC学习笔记 gPRC基础教程. gPRC官方文档. protobuf 3.0的简易教程. 什么是RPC RPC(remote procedure call) -- 远程过程调用(相对于本地调用的 ...

  4. 《Linux内核分析》第六周学习笔记

    <Linux内核分析>第六周学习笔记 进程的描述和创建 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/co ...

  5. Muduo学习笔记(一) 什么都不做的EventLoop

    Muduo学习笔记(一) 什么都不做的EventLoop EventLoop EventLoop的基本接口包括构造.析构.loop(). One Loop Per Thread 一个线程只有一个Eve ...

  6. 20135202闫佳歆--week6 进程的描述与创建--学习笔记

    此为个人学习笔记存档! week 6 进程的描述与创建 一.进程的描述 1.进程控制块task_struct 以下内容来自视频课件,存档在此. 为了管理进程,内核必须对每个进程进行清晰的描述,进程描述 ...

  7. Linux内核分析第六周学习笔记——分析Linux内核创建一个新进程的过程

    Linux内核分析第六周学习笔记--分析Linux内核创建一个新进程的过程 zl + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/U ...

  8. 孙鑫视频VC++深入详解学习笔记

    孙鑫视频VC++深入详解学习笔记 VC++深入详解学习笔记 Lesson1: Windows程序运行原理及程序编写流程 Lesson2: 掌握C++基本语法 Lesson3: MFC框架程序剖析 Le ...

  9. 《软件调试的艺术》学习笔记——GDB使用技巧摘要

    <软件调试的艺术>学习笔记——GDB使用技巧摘要 <软件调试的艺术>,因为名是The Art of Debugging with GDB, DDD, and Eclipse. ...

随机推荐

  1. 从函数作用域和块级作用域看javascript的作用域链

    在ES6之前,javascript只有全局作用域和函数作用域.所谓作用域就是一个变量定义并能够被访问到的范围.也就是说如果一个变量定义在全局(window)上,那么在任何地方都能访问到这个变量,如果这 ...

  2. 在 Azure Web 应用中创建 Java 应用程序

    本分步指南将通过 Azure Web 应用帮助您启动并运行示例 Java 应用程序.除 Java 外,Azure Web 应用还支持其他语言,如 PHP..NET.Node.JS.Python.Rub ...

  3. C#简单实现读取txt文本文件并分页存储到数组

    最近做一个VR项目,需要把某个中草药的介绍信息分页显示到unity场景里然后用VR手柄切换信息. unity的脚本是c#,就先在本地写了个代码测试了一下,利用控制台测试输出,到时候拷贝函数过去再结合交 ...

  4. 关于meta标签中的http-equiv属性使用介绍

    关于meta标签中的http-equiv属性使用介绍 meta是html语言head区的一个辅助性标签.也许你认为这些代码可有可无.其实如果你能够用好meta标签,会给你带来意想不到的效果,meta标 ...

  5. PAT 1059. Prime Factors

    反正知道了就是知道,不知道也想不到,很快 #include <cstdio> #include <cstdlib> #include <vector> using ...

  6. 给HTML拍个照(如何将html元素转成图片)

    本文主要介绍一款好用的库,如何将HTML生成图片. 1.简述 最近在做的项目中,需要将界面转换成模板保存下来,本来想使用自适应布局完成,但是页面较复杂,模板较多,生成的模板使用过多的HTML标签,于是 ...

  7. javascript统计一个字符在一段字符串出现次数

      <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" ...

  8. 【代码笔记】XML深入学习:DTD约束与DTD语法(1)

    2015-12-27 文件名    student.xml <?xml version="1.0" encoding="GB2312" standalon ...

  9. 学习canvas

    canvas简介 ​ <canvas> 是 HTML5 新增的,一个可以使用脚本(通常为JavaScript)在其中绘制图像的 HTML 元素.它可以用来制作照片集或者制作简单(也不是那么 ...

  10. Gson 转换hibernate级联对象出现StackOverFlow(堆栈溢出)问题

    < many-to-one>和< one-to-many>属性的对象级联关系在转换时会造成死循环,报stackOverFlowException. 比如下面这段: @OneTo ...