Posix多线程编程-线程属性2
来源:互联网 发布:中国 20年 人口 知乎 编辑:程序博客网 时间:2024/05/16 08:51
四、线程的调度策略
函数pthread_attr_setschedpolicy和pthread_attr_getschedpolicy分别用来设置和得到线程的调度策略。
这两个函数具有两个参数,第1个参数是指向属性对象的指针,第2个参数是调度策略或指向调度策略的指针。调度策略可能的值是先进先出(SCHED_FIFO)、轮转法(SCHED_RR),或其它(SCHED_OTHER)。
SCHED_FIFO策略允许一个线程运行直到有更高优先级的线程准备好,或者直到它自愿阻塞自己。在SCHED_FIFO调度策略下,当有一个线程准备好时,除非有平等或更高优先级的线程已经在运行,否则它会很快开始执行。
SCHED_RR(轮循)策略是基本相同的,不同之处在于:如果有一个SCHED_RR策略的线程执行了超过一个固定的时期(时间片间隔)没有阻塞,而另外的SCHED_RR或SCHBD_FIPO策略的相同优先级的线程准备好时,运行的线程将被抢占以便准备好的线程可以执行。
当有SCHED_FIFO或SCHED_RR策赂的线程在一个条件变量上等持或等持加锁同一个互斥量时,它们将以优先级顺序被唤醒。即,如果一个低优先级的SCHED_FIFO线程和一个高优先织的SCHED_FIFO线程都在等待锁相同的互斥且,则当互斥量被解锁时,高优先级线程将总是被首先解除阻塞。
五、线程的调度参数
函数pthread_attr_getschedparam 和pthread_attr_setschedparam分别用来设置和得到线程的调度参数。
这两个函数具有两个参数,第1个参数是指向属性对象的指针,第2个参数是sched_param结构或指向该结构的指针。结构sched_param在文件/usr/include /bits/sched.h中定义如下:
struct sched_param
{
int sched_priority;
};
结构sched_param的子成员sched_priority控制一个优先权值,大的优先权值对应高的优先权。系统支持的最大和最小优先权值可以用sched_get_priority_max函数和sched_get_priority_min函数分别得到。
注意:如果不是编写实时程序,不建议修改线程的优先级。因为,调度策略是一件非常复杂的事情,如果不正确使用会导致程序错误,从而导致死锁等问题。如:在多线程应用程序中为线程设置不同的优先级别,有可能因为共享资源而导致优先级倒置。
- Posix多线程编程(2)—线程属性
- Posix多线程编程-线程属性2
- Posix多线程编程(2)—线程属性
- Posix多线程编程—线程属性
- Posix多线程编程-线程属性1
- Posix 多线程编程—线程属性
- Posix多线程编程—线程属性
- Posix多线程编程—线程属性
- Posix多线程编程—线程属性
- Posix多线程编程—线程属性
- Posix多线程编程—线程属性【转】
- Posix多线程编程—线程属性
- posix多线程有感--线程高级编程(线程属性pthread_attr_t)
- posix多线程有感--线程高级编程(线程属性函数总结)
- Linux 多线程编程( POSIX )( 二 )----->pthread_attr_t 线程属性
- Linux 多线程编程( POSIX )( 二 )----->pthread_attr_t 线程属性
- posix多线程有感--线程高级编程(互斥量属性)
- posix多线程有感--线程高级编程(条件变量属性)
- PHP File Upload
- 模板类成员函数特化写法
- [NHibernate] Guid 作主键速度超慢的背后
- 关于博客的暂时迁移
- 困惑--上半年我国居民消费价格总水平(CPI)同比上涨5.4%!
- Posix多线程编程-线程属性2
- IIS中没有frontpage服务器扩展解决方法
- I2C调试小结
- 用 Groovy 进行 Ant 脚本编程
- Ubuntu移植qt4.4.3到mips平台
- TextView跑马灯必成五属性
- 时间格式
- MMORPG服务器 - Analysis Architecture
- http://download.csdn.net/source/1481232