线程高级编程

一次性初始化

pthread_one_t   oneControl = PTHREAD_ONE_INIT

int pthread_one (pthread_one_t * one_control, void (*init_routine)(void));

使用一个bool量和静态初始化的互斥锁,比使用pthread_one 效果更好,只有在不能使用静态初始化互斥量的时候才使用pthread_one

one_cotrol 相当于bool量,在函数里面进行互斥量的动态初始化

线程属性-互斥量属性

pthread_mutexattr_t attr;

int pthread_mutexattr_Init

int pthread_mutexattr_destory

#ifdef  _POSIX_PTHREAD_PROCESS_SHARED

int pthread_mutexattr_getpshared()

int pthread_mutexattr_setpshared()

PTHREAD_PROCESS_SHARED:互斥锁可以被跨进程共享
PTHREAD_PROCESS_PRIVATE:只能被初始化线程所属的进程中的线程共享
int pthread_mutexattr_gettype(const pthread_mutexattr_t* attr, int* type);
int pthread_mutexattr_settype(pthread_mutexattr_t* attr, int type);
PTHREAD_MUTEX_NOMAL:
公平锁,对一个已经加锁的普通锁再次加锁,将引发死锁;对一个已经被其他线程加锁的普通锁解锁,或者对一个已经解锁的普通锁再次解锁,将导致不可预期的后果。
PTHREAD_MUTEX_ERRORCHECK:检错锁,对一个已经加锁的检错锁再次加锁,则加锁操作返回EDEADLOCK。对一个已经被其他线程加锁的检错锁解锁,或者对一个已经解锁的检错锁再次解锁,则解锁操作返回EPERM。
PTHREAD_MUTEX_RECURSIVE:嵌套锁,错误使用返回EPERM
PTHREAD_MUTEX_DEFAULT:跟nomal差不多。

线程属性-条件变量属性


线程优先级(线程的实时调度)

在使用实时线程时,先要确定子线程是否继承主线程的调度级别(pthread_attr_setinheritsched),然后才能确定子线程的调度政策,已经优先级;

status = pthread_attr_setinheritsched(&threadAttr1,PTHREAD_EXPLICIT_SCHED);
 29     NOZERO_EN(status);
 30
 31     status = pthread_attr_setschedpolicy(&threadAttr1,SCHED_RR);                                
 32     NOZERO_EN(status);
 33
 34     threadParam.sched_priority = (rrMinPriority + rrMaxPriority)/2;
 35     status = pthread_attr_setschedparam(&threadAttr1,&threadParm)

实时调度政策  :

SCHED_FIFO(先入先出)策略运行一个线程直到有更高级的准备好,或者是线程自己自愿堵塞,在SCHED_FIFO策略下,当有一个线程准备好,除非有平等或更高级别的线程

                                             否则他会很快运行。

SCHED_RR(轮训)策略如果有一个线程执行超过了固定的时期没有阻塞,而另外的SCHED_RR或者SCHED_FIFO相同优先级的线程准备好时,运行的线程会被强占以使

                                        准备好 的线程运行(sched_rr_get_interval获取时间间隔)。

SCHED_OTHER()  该策略是默认的,会在多个运行线程间切换CPL占用。在这种情况下不能控制线程的调度

当SCHED_RR和SCHED_FIFO在同一个条件变量上等待,或者等待同一个互斥锁,他们将以优先级的顺序而唤醒。

如果是单CPU时候 ,会出现只能开一个子线程的情况。

pthread_exit 在主线程使用,主线程会编程defunct状态也就是僵尸进程



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小喾

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

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

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

打赏作者

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

抵扣说明:

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

余额充值