线程(pthread) POSIX线程互斥量(mutex) POSIX读写锁(RWLOCK):读共享、写独占、写优先 POSIX条件变量(condition):信号+锁 POSIX自旋锁(spinlock):忙等但不切换上下文 POSIX屏障(BARRIER):等线程达到一定数量后一起通过 线程key:即c++11的thread_local变量,线程内全局变量,跨函数传参方便 备注: 1)初(sem_init)销(sem_destroy)信号量、进程标志(pshared)和数量 备注: 三、信号文件:signal.h 如果参数为基本数据类型(如:整型),改变其值传指针,不改变其值传值;
话说多线程的POSIX接口好多、好难记、花了一整天的时间,稍微梳理下便于后续查看:
一、POSIX线程文件:pthread.h
1)创(pthread_create)线(程)(pthread_t)属(pthread_attr_t)函(数及其)参(数)
2)线程(类是)整型、创(建)带星、其(余的)无星、回调(函数)双空星(void*(xx)(void*))
3)分离(pthread_detach)、加入(pthread_join)参数返(void **return)
4)返0成功、属可空、默不崩
5)退出函数(pthread_exit)可带参(void*)
1)初(pthread_mutex_init)销(pthread_mutex_destroy)锁、锁属(pthread_mutexattr_t)可空、结构(体带)星
2)单次、上锁(pthread_mutex_lock)解锁(pthread_mutex_unlock)尝试锁(pthread_mutex_trylock)
3)超时锁(pthread_mutex_timedlock)、绝对时(间)(timespec(tv_sec, tv_nsec))
1)读写初(pthread_rwlock_init)销(pthread_rwlock_destroy)锁、读写(锁)有属(pthread_rwlockattr_t)属可空
2)多次(上锁)读(pthread_rwlock_rdlock)写(pthread_rwlock_wrlock)、读写分(离)、解(锁:pthread_rwlock_unlock)不分
3)尝读(pthread_rwlock_tryrdlock)写(pthread_rwlock_trywrlock)、超时(的等待)读(pthread_rwlock_timedrdlock)写(pthread_rwlock_timedwrlock)、绝对时(timespec(tv_sec, tv_nsec))
1)初(pthread_cond_init)销(pthread_cond_destroy)条(件变量)、条(件变量)属(pthread_condattr_t)可空
2)单播信号(pthread_cond_signal)、广播(pthread_cond_broadcast)等(pthread_cond_wait)(手动)解锁(pthread_mutex_t)
3)超时条等(pthread_cond_timedwait)绝对时(timespec(tv_sec, tv_nsec))
1)自旋初(pthread_spin_init)销(pthread_spin_destroy)锁、(创建时指明)共享标志(PTHREAD_PROCESS_PRIVATE/PTHREAD_PROCESS_SHARED)代替属(性)
2)单次自旋、上锁(pthread_spin_lock)解锁(pthread_spin_unlock)尝试锁(pthread_spin_trylock)
1)屏障初(pthread_barrier_init)销(pthread_barrier_destroy)、属(pthread_barrierattr_t)和数(count)
2)批(量)等待(pthread_barrier_wait)、0(表示)无限(数量)
1)key创(pthread_key_create)回调(void()(void*))、删(除有值的key)时调
2)创(pthread_key_create)删(pthread_key_delete)有key其(他函数名)无key、设置(pthread_setspecific)返回(pthread_getspecific)空星值(void*)
1) 函数返回值为0,表示成功,非0失败
2) 互斥量属性(pthread_mutexattr_t)、读写锁属性(pthread_rwlockattr_t)、条件变量属性(pthread_condattr_t)、自旋锁、屏障属性(pthread_barrierattr_t)都可设置 pshared 标志,即都支持不同进程间的线程共享,从而实现不同进程间的线程同步
3)获取绝对时间:clock_gettime(CLOCK_REALTIME, &ts)
4)除了线程和线程key是xxx_create/xx_delete以外,其他都是xxx_init/xxx_destroy
5)除了线程和线程key的句柄是创建时带星以外,其他都是一直带星二、POSIX信号量文件:semaphore.h(注:sys/sem.h提供的是符合 System V 标准的semaphore接口)
2)开(sem_open)关(sem_close)(根据)名(字)关(sem_unlink)、取值(sem_getvalue)整(int *)
3)抛(sem_post)等(sem_wait)、尝等(sem_trywait)、超时等(sem_timedwait)、绝对时(timespec)
4)打开(sem_open)还有标志位(O_CREAT、O_EXCL)
1)信号量也支持设置 pshared 标志位
2)信号量的类型为:sem_t
1)抽时间完善下备注:
如果参数为自定义较为复杂的数据类型(如:结构体、vid *),那么无论是否改变其值,一般传指针;
一般用 void * 来表示通用数据类型,通用数据类型加上改变其值,函数声明中就变成了:void**的形式;
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算