c语言多线程编程笔记(自用版-非博文)
pthread学习笔记
学过之后, 自己给自己讲一遍 , 然后记住学到的接口
pthread_create() 线程创建函数
pthread_self() 获取当前线程ID(返回值与线程Id一致 无符号长整形 %ld)
线程资源回收 * pthread_join() 默认结合态,用次函数阻塞主线程回收子线程资源 * pthread_detach() 设置子线程为分离态,线程退出后资源自动回收 * pthread_exit() 线程退出函数,相当于return
线程取消 * pthread_cancel() 线程取消(注意:在系统调用(从用户区切换到内核区)时,才会正确的接收——pthread_exit() ,否则相当于return了线程) * pthread_setcancelstate() 设置取消状态 * int pthread_equal(pthread_t t1, pthread_t t2); 线程Id比较函数 * pthread_testcancle() 使函数在没有系统调用取消点的情况下,依然能够正确接收到取消信号
线程Id比较函数 int pthread_equal(pthread_t t1, pthread_t t2);
注册线程退出清理函数 * pthread_cleanup_push() 注册线程退出清理函数 * pthread_cleanup_pop() 弹出线程清理函数,参数为0仅弹出不执行,否则弹出并执行
互斥锁 * pthread_mutex_init() 互斥锁初始化(互斥锁的创建) * pthread_mutex_lock() 上锁(如果已经上锁,则阻塞等待,等待至解锁后,作上锁操作) * pthread_mutex_unlock() 解锁 * pthread_mutex_destroy() 销毁互斥锁 * pthread_mutex_trylock() 上锁(如果已经上锁,则返回) /***************************************************/ 读写锁(互斥锁的升级版本) * pthread_rwlock_init() 读写锁 * int pthread_rwlock_rdlock() 给读上锁(会阻塞其他的给写上锁,读上锁不受影响,可并发运行) * int pthread_rwlock_wrlock() 给写上锁(会阻塞其他的给读写上锁) * int pthread_rwlock_unlock() 给读写解锁 * int pthread_rwlock_destroy() 销毁互斥锁 * int pthread_rwlock_tryrdlock() 给读上锁(参考互斥所) * int pthread_rwlock_trywrlock() 给写上锁
信号量 * sem_init() 信号量的初始化(信号量的创建) * sem_destroy() 信号量的销毁 * sem_wait() 信号量资源-1,如果资源为0,则阻塞 * sem_post() 信号量资源+1 * sem_trywait() 信号量资源-1,如果资源为0,则返回 * sem_timerwait() 信号量资源-1,如果资源为0,则阻塞设置时长后解除阻塞。 (设置的时长是从1970.1.1到现在+需要设置的世界值)
条件变量 * pthread_cond_init() 条件变量的初始化 * pthread_cond_destroy() 条件变量的销毁 * pthread_cond_wait(condId,mutextId) 条件变量的阻塞函数,到这一句一定会阻塞于此并解开互斥锁,直到接收到唤醒信号才会解除阻塞 * pthread_cond_signal() 条件变量的唤醒信号(至少唤醒一个) * pthread_cond_broadcast() 条件变量的唤醒信号(唤醒所有)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 道远日暮时不存!