PThread 学习笔记

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++高级编程》

时间: 2024-11-13 09:43:32

PThread 学习笔记的相关文章

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

<Linux内核分析>第六周学习笔记 进程的描述和创建 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 [学习视频时间:1小时 撰写博客时间:2小时] [学习内容:进程创建的过程.使用gdb跟踪分析内核处理函数sys_clone] 一.进程的描述 1.1 进程描述符task_struct数据结构(一) 1. 进程控制块PCB——task_struct 为了管理进程,内核

Linux System Programming 学习笔记(七) 线程

1. Threading is the creation and management of multiple units of execution within a single process 二进制文件是驻留在存储介质上,已被编译成操作系统可以使用,准备执行但没有正运行的休眠程序 进程是操作系统对 正在执行中的二进制文件的抽象:已加载的二进制.虚拟内存.内核资源 线程是进程内的执行单元 processes are running binaries, threads are the smal

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

Lesson1: Windows程序运行原理及程序编写流程 Lesson2: 掌握C++基本语法 Lesson3: MFC框架程序剖析 Lesson4: 简单绘图 Lesson5: 文本编程 Lesson6: 菜单编程 Lesson7: 对话框编程 Lesson9: 定制应用程序的外观 Lesson10: 绘图控制 Lesson11 图形的保存和重绘 Lesson12 文件操作 Lesson 13: 文档串行化 Lesson14 网络编程 Lesson 15 多线程 Lesson 16 线程同步

Linux学习笔记——例说makefile 综合案例

0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己动手写一个makefile总觉得非常吃力.所以特意借助博客总结makefile的相关知识,通过例子说明makefile的具体用法. 例说makefile大致分为4个部分 1.只有单个C文件 2.含有多个C文件 3.需要包括头文件路径 4.一个较为复杂的例子 [代码仓库]--makefile-example 代码仓库位于bitbucket,可借助Tortoise

Linux程序设计学习笔记----多线程编程线程同步机制之互斥量(锁)与读写锁

互斥锁通信机制 基本原理 互斥锁以排他方式防止共享数据被并发访问,互斥锁是一个二元变量,状态为开(0)和关(1),将某个共享资源与某个互斥锁逻辑上绑定之后,对该资源的访问操作如下: (1)在访问该资源之前需要首先申请互斥锁,如果锁处于开状态,则申请得到锁并立即上锁(关),防止其他进程访问资源,如果锁处于关,则默认阻塞等待. (2)只有锁定该互斥锁的进程才能释放该互斥锁. 互斥量类型声明为pthread_mutex_t数据类型,在<bits/pthreadtypes.h>中有具体的定义. 互斥量

linux网络编程学习笔记之五 -----并发机制与线程?

进程线程分配方式 简述下常见的进程和线程分配方式:(好吧,我仅仅是举几个样例作为笔记...并发的水太深了,不敢妄谈...) 1.进程线程预分配 简言之,当I/O开销大于计算开销且并发量较大时,为了节省每次都要创建和销毁进程和线程的开销.能够在请求到达前预先进行分配. 2.进程线程延迟分配 预分配节省了处理时的负担,但操作系统管理这些进程线程也会带来一定的开销.由此,有个折中的方法是,当某个处理须要花费较长时间的时候,我们创建一个并发的进程或线程来处理该请求.实现也非常easy,在主线程中定时,定

Boost Thread学习笔记二

除了thread,boost::thread另一个重要组成部分是mutex,以及工作在mutex上的boost::mutex::scoped_lock.condition和barrier,这些都是为实现线程同步提供的. mutexboost提供的mutex有6种:boost::mutexboost::try_mutexboost::timed_mutexboost::recursive_mutexboost::recursive_try_mutexboost::recursive_timed_m

Boost Thread学习笔记

thread自然是boost::thread库的主 角,但thread类的实现总体上是比较简单的,前面已经说过,thread只是一个跨平台的线程封装库,其中按照所使用的编译选项的不同,分别决定使用 Windows线程API还是pthread,或者Macintosh Carbon平台的thread实现.以下只讨论Windows,即使用 BOOST_HAS_WINTHREADS的情况.thread类提供了两种构造函数:thread::thread()thread::thread(const func

linux应用编程基础学习笔记

********************************************************            --文件I/O-- 文件:文本文件:存储量大,速度慢,便于字符操作二进制文件:存储量小,速度快,便于存放中间结果 普通文件:设备文件: ---C标准函数---:Buffered I/O,高级文件系统,在用户空间开辟缓冲区,流操作(stream)#include<stdio.h> typedef struct{ int _fd;      //文件号 int _