Pthread学习记录

1. 头文件

#include <pthread>

2. API

线程创建
/// 创建线程
///@arg 
/// thread 创建后,TID 写入该指针指向的变量中
/// attr 线程属性存储
/// start_routine 线程实体函数
/// arg 传入线程实体函数内部
int pthread_create(
	  pthread_t *thread
	, const pthread_attr_t *attr
	, void *(*start_routine) (void *)
	, void *arg);
 线程退出
// 线程退出
// retval 线程退出后,子线程的主线程会得到数据
void pthread_exit(void *retval);

//主线程退出后,若子线程还在运行则主线程地址空间不会被释放
//直到线程全部结束,或被终结
线程回收
//thread 对应TID; retval为回收的数据
int pthread_join(pthread_t thread, void **retval);
//阻塞式函数
//线程退出,函数解除阻塞,回收子线程资源;
线程分离
//将子线程与母线程分离,子线程退出时,其占用资源即被释放
pthread_detach(pthread_t);
线程同步

互斥锁

// 定义互斥锁
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;

// 锁定互斥锁
pthread_mutex_lock(&mutex);

// 解锁互斥锁
pthread_mutex_unlock(&mutex);

//销毁互斥锁
pthread_mutex_destroy(&mutex);

读写锁

//读锁允许多个线程持有;
//写锁排他,其他线程必须等待
pthread_rwlock_t rwlock = PTHREAD_RWLOCK_INITIALIZER;

//读取锁
pthread_rwlock_rdlock(&rwlock);

//释放读锁
pthread_rwlock_unlock(&rwlock);

//写入锁
pthread_rwlock_wrlock(&rwlock);

//释放写入锁
pthread_rwlock_unlock(&rwlock);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值