pthread学习笔记

votzone votzone     2022-08-04     788

关键词:

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

 

libuv学习笔记uv_barrier_xxx与pthread_barrier_xxx相关(代码片段)

...了uv_barrier_xxx相关函数,虽然说libuv的线程库总的来说和pthread差不多,但在看APUE的时候都没碰到过线程同步相关里面这个概念,于是网上查找了一下,总结如下:pthread_barrier_xxx系列函数在<pthread.h>中定义,用于多线程的同步... 查看详情

线程学习笔记

...线程线程退出的方式有3种1.线程体函数执行结束,用 pthread_create() 函数创建一个新线程的时候会执行一个函数,这个函数就是线程体函数,如果该函数执行完毕,那么线程退出,类似于住进程的 main() 函数返回。2.... 查看详情

线程-pthread笔记

线程-Pthread1.作用:a) 单进程环境中执行多个任务b) 一个进程中的所有线程可以访问该进程的组成部件:文件描述符和内存等c) 资源一致性2.线程标识a) 每个线程有一个ID:pthread_t数据类型3.线程启动相关函数a) 比较两个... 查看详情

c++11thread学习笔记(代码片段)

...VSCode中使用线程,需要在tasks.json文件的args属性中添加"-pthread".下面的例子展示了使用函数指针创建线程的方式:#in 查看详情

ubuntu如何安装pthread?

...学习多线程,但是ubuntu是新安装的,头文件加了#include<pthread.h>里面用到pthread_create()和pthread_join(),运行程序老是说没有定义,是不是没有安装pthread软件包阿?怎么安装?用到哪些命令呢?由于学习多线程编程,所以用到pthrea... 查看详情

c++11thread学习笔记(代码片段)

...VSCode中使用线程,需要在tasks.json文件的args属性中添加"-pthread".下面的例子展示了使用函数指针创建线程的方式:#include<iostream>#include<thread>usingnamespacestd;voidthread_function()for(inti=0;i<10000;++i);std::cout<<"th... 查看详情

pthread多线程编程的学习小结(代码片段)

...到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshowpthread多线程编程整理  1Introduction不用介绍了吧…2ThreadConcepts1.    Thread由下面部分组成:a.    ThreadIDb.    Stackc.  &nb... 查看详情

pthread优先级和pthread策略有啥关系?

】pthread优先级和pthread策略有啥关系?【英文标题】:Whatistherelationshipbetweenpthreadpriorityandpthreadpolicy?pthread优先级和pthread策略有什么关系?【发布时间】:2019-11-1119:52:44【问题描述】:我目前正在学习pthreads,并且正在努力理解线... 查看详情

后端程序员之路40pthreads

POSIX线程(POSIXthreads),简称Pthreads,是线程的POSIX标准。线程这个东西在操作系统原理里讲得比较清楚了,再加上对windows那一套进程线程的东西比较清楚,所以这里还是很多可以直接类比学习的。#基本结构和概念-pthread_t:线程... 查看详情

使用 Mutex 和 Pthread 库的错误输出

】使用Mutex和Pthread库的错误输出【英文标题】:WrongOutputusingMutexandPthreadLibrary【发布时间】:2015-10-0308:21:04【问题描述】:以下程序的目的是学习Mutex和Pthread库。main()创建三个线程。(线程1、2和3)。每个线程一个接一个地顺序... 查看详情

(转)akka学习笔记

Akka学习笔记系列文章:  《Akka学习笔记:ACTORS介绍》  《Akka学习笔记:Actor消息传递(1)》  《Akka学习笔记:Actor消息传递(2)》    《Akka学习笔记:日志》  《Akka学习笔记:测试Actors》  《Akka学习笔记:Actor消... 查看详情

lib pthread:单线程性能与多线程

】libpthread:单线程性能与多线程【英文标题】:libpthread:singlethreadedperformancevsmultithreaded【发布时间】:2012-12-1908:43:37【问题描述】:(注意:我看到了这个帖子,如果是同样的问题,请告诉我:C:performanceofpthread,lowthansinglethrad)... 查看详情

efcodefirst学习笔记

EFCodeFirst学习笔记初识CodeFirstEFCodeFirst学习笔记:约定配置EntityFramework复杂类型EntityFramework数据生成选项DatabaseGeneratedEntityFramework并发处理EFCodeFirst学习笔记:关系EntityFrameworkCodeFirst级联删除EFCodeFirst学习笔记:表映射EFCodeFirst学习 查看详情

windows编程课程学习笔记

一.Windows程序内部运行机制--Windows编程课程学习笔记二.MFC框架程序分析--Windows编程课程学习笔记三.简单绘图--Windows编程课程学习笔记四.文本编程--Windows编程课程学习笔记五.菜单编程--Windows编程课程学习笔记六.对话框编程--Window... 查看详情

系列文章--node.js学习笔记系列

Node.js学习笔记系列总索引Nodejs学习笔记(一)---简介及安装Node.js开发环境Nodejs学习笔记(二)---事件模块Nodejs学习笔记(三)---模块Nodejs学习笔记(四)---与MySQL交互(felixge/node-mysql)Nodejs学习笔记(五)---Express安装入门与模... 查看详情

C pthread_barrier 同步问题

】Cpthread_barrier同步问题【英文标题】:Cpthread_barriersynchronizationissues【发布时间】:2014-04-2012:38:23【问题描述】:我刚开始学习pthread_barriers及其工作原理。基本上我有两个数组和两个线程,一个线程找到数组A的最大值,另一个... 查看详情

springboot学习笔记——thymeleaf(代码片段)

前置知识:SpringBoot学习笔记——SpringBoot简介与HelloWordSpringBoot学习笔记——源码初步解析SpringBoot学习笔记——配置文件yaml学习SpringBoot学习笔记——JSR303数据校验与多环境切换SpringBoot学习笔记——自动配置原理SpringBoot学习笔记... 查看详情

2022年spark基础学习笔记

一、Spark学习笔记在OpenStack私有云上创建与配置虚拟机Spark基础学习笔记01:初步了解SparkSpark基础学习笔记02:Spark运行时架构Spark基础学习笔记03:搭建Spark单机版环境Spark基础学习笔记04:搭建Spark伪分布式环境Spark基础学习笔记05... 查看详情