C语言线程API列表

pthread(POSIX threads)库包含了超过100个API,通常可按功能分为线程管理、同步机制、线程特定数据、属性对象等几大类。下面是主要API的分类及功能简介。


一、线程管理 (Thread Management)

线程的创建、终止、连接、分离及控制。

函数功能描述
pthread_create()创建一个新线程
pthread_exit()终止调用线程
pthread_join()等待指定线程终止
pthread_detach()将线程设为分离状态,使其结束时自动回收资源
pthread_self()获取调用线程的ID
pthread_equal()比较两个线程ID是否相等
pthread_cancel()向指定线程发送取消请求
pthread_setcancelstate()设置当前线程的取消状态(启用/禁用)
pthread_setcanceltype()设置当前线程的取消类型(延迟/异步)
pthread_testcancel()在当前线程中创建一个取消点
pthread_once()确保初始化函数在程序生命周期内只执行一次
pthread_yield()让出CPU,允许调度器运行其他线程

二、互斥锁 (Mutex)

提供互斥访问,保护临界区,确保同一时刻只有一个线程进入。

函数功能描述
pthread_mutex_init()初始化互斥锁
pthread_mutex_destroy()销毁互斥锁
pthread_mutex_lock()加锁(阻塞)
pthread_mutex_trylock()尝试加锁(非阻塞)
pthread_mutex_unlock()解锁
pthread_mutex_consistent()将处于不一致状态的强壮互斥锁恢复为一致状态

三、条件变量 (Condition Variable)

允许线程在特定条件不满足时等待,并在条件满足时被唤醒,通常与互斥锁配合使用。

函数功能描述
pthread_cond_init()初始化条件变量
pthread_cond_destroy()销毁条件变量
pthread_cond_wait()等待条件变量(阻塞)
pthread_cond_timedwait()限时等待条件变量
pthread_cond_signal()唤醒一个等待线程
pthread_cond_broadcast()唤醒所有等待线程

四、读写锁 (Read-Write Lock)

允许多个线程同时读取,但写入时独占访问,适用于读多写少的场景。

函数功能描述
pthread_rwlock_init()初始化读写锁
pthread_rwlock_destroy()销毁读写锁
pthread_rwlock_rdlock()加读锁(阻塞)
pthread_rwlock_wrlock()加写锁(阻塞)
pthread_rwlock_unlock()解锁
pthread_rwlock_tryrdlock()尝试加读锁(非阻塞)
pthread_rwlock_trywrlock()尝试加写锁(非阻塞)

五、屏障 (Barrier)

同步一组线程,让它们共同等待,直到所有线程都到达屏障点后才一起继续。

函数功能描述
pthread_barrier_init()初始化屏障
pthread_barrier_destroy()销毁屏障
pthread_barrier_wait()在屏障处等待

六、自旋锁 (Spinlock)

在无法获取锁时忙等待(Busy-Wait),适用于锁持有时间极短的场景。

函数功能描述
pthread_spin_init()初始化自旋锁
pthread_spin_destroy()销毁自旋锁
pthread_spin_lock()加锁(忙等待)
pthread_spin_trylock()尝试加锁(非阻塞)
pthread_spin_unlock()解锁

七、 线程特定数据 (Thread-Specific Data)

为每个线程提供独立的全局变量(即线程局部存储)。

函数功能描述
pthread_key_create()创建一个线程特定数据键
pthread_key_delete()删除一个线程特定数据键
pthread_setspecific()设置当前线程的特定数据值
pthread_getspecific()获取当前线程的特定数据值

八、清理处理程序 (Cleanup Handlers)

在线程被取消或退出时,自动执行清理操作(如释放资源)。

函数功能描述
pthread_cleanup_push()压入一个清理处理程序
pthread_cleanup_pop()弹出并执行(或不执行)清理处理程序

九、 属性对象 (Attribute Objects)

用于在创建对象前设置其行为属性(如分离状态、栈大小、调度策略等)。

类别相关函数
线程属性pthread_attr_init()pthread_attr_destroy()pthread_attr_setdetachstate()pthread_attr_getdetachstate()pthread_attr_setstacksize()pthread_attr_getstacksize()pthread_attr_setstack()pthread_attr_getstack()pthread_attr_setguardsize()pthread_attr_getguardsize()
互斥锁属性pthread_mutexattr_init()pthread_mutexattr_destroy()pthread_mutexattr_settype()pthread_mutexattr_gettype()pthread_mutexattr_setpshared()pthread_mutexattr_getpshared()
条件变量属性pthread_condattr_init()pthread_condattr_destroy()pthread_condattr_setpshared()pthread_condattr_getpshared()
读写锁属性pthread_rwlockattr_init()pthread_rwlockattr_destroy()pthread_rwlockattr_setpshared()pthread_rwlockattr_getpshared()
屏障属性pthread_barrierattr_init()pthread_barrierattr_destroy()pthread_barrierattr_setpshared()pthread_barrierattr_getpshared()

十、信号与调度 (Signals & Scheduling)

控制线程的信号处理和调度行为。

函数功能描述
pthread_kill()向指定线程发送信号
pthread_sigmask()设置当前线程的信号掩码
pthread_sigqueue()向线程发送带数据的信号
pthread_attr_setschedpolicy()设置线程的调度策略
pthread_attr_getschedpolicy()获取线程的调度策略
pthread_attr_setschedparam()设置线程的调度参数
pthread_attr_getschedparam()获取线程的调度参数

十一、命名规范速查

pthread库中的所有标识符都以 pthread_ 开头,不同功能模块拥有不同的前缀,便于识别:

功能模块前缀
线程管理pthread_
互斥锁pthread_mutex_
条件变量pthread_cond_
读写锁pthread_rwlock_
屏障pthread_barrier_
自旋锁pthread_spin_
线程特定数据pthread_key_ / pthread_getspecific
属性对象pthread_attr_ / *_attr_

编译链接:使用pthread库时,需要包含头文件 #include <pthread.h>,并在编译时链接线程库:gcc -pthread file.c

以上是pthread库的主要API分类及功能概述,涵盖了线程管理、各类同步机制、线程局部存储、属性配置等核心方面,可以满足多线程编程的大部分需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万法若空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值