线程属性(2)
来源:互联网 发布:淘宝怎么申请解冻 编辑:程序博客网 时间:2024/05/15 22:28
五、线程的调度参数
函数pthread_attr_getschedparam 和pthread_attr_setschedparam分别用来设置和得到线程的调度参数。
名称::
pthread_attr_getschedparam
pthread_attr_setschedparam
功能:
获得/设置线程的调度参数
头文件:
#include <pthread.h>
函数原形:
int pthread_attr_getschedparam(const pthread_attr_t *attr,struct sched_param *param);
int pthread_attr_setschedparam(pthread_attr_t *attr,const struct sched_param *param);
参数:
attr 线程属性变量
param sched_param结构
返回值:
若成功返回0,若失败返回-1。
这两个函数具有两个参数,第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函数分别得到。
注意:如果不是编写实时程序,不建议修改线程的优先级。因为,调度策略是一件非常复杂的事情,如果不正确使用会导致程序错误,从而导致死锁等问题。如:在多线程应用程序中为线程设置不同的优先级别,有可能因为共享资源而导致优先级倒置。
名称::
sched_get_priority_max
sched_get_priority_min
功能:
获得系统支持的线程优先权的最大和最小值
头文件:
#include <pthread.h>
函数原形:
int sched_get_priority_max(int policy);
int sched_get_priority_min(int policy);
参数:
policy 系统支持的线程优先权的最大和最小值
返回值:
若成功返回0,若失败返回-1。
八、线程堆栈的地址
函数pthread_attr_setstackaddr和pthread_attr_getstackaddr分别用来设置和得到线程堆栈的位置,这两个函数的定义如下:
名称::
pthread_attr_setstackaddr
pthread_attr_getstackaddr
功能:
获得/修改线程栈的位置
头文件:
#include <pthread.h>
函数原形:
int pthread_attr_getstackaddr(const pthread_attr_t *attr,void **stackaddf);
int pthread_attr_setstackaddr(pthread_attr_t *attr,void *stackaddr);
参数:
attr 线程属性变量
stackaddr 堆栈地址
返回值:
若成功返回0,若失败返回-1。
这两个函数具有两个参数,第1个是指向属性对象的指针,第2个是堆栈地址或指向堆栈地址的指针。
九、线程栈末尾的警戒缓冲区大小
函数pthread_attr_getguardsize和pthread_attr_setguardsize分别用来设置和得到线程栈末尾的警戒缓冲区大小,这两个函数的定义如下:
名称::
pthread_attr_getguardsize
pthread_attr_setguardsize
功能:
获得/修改线程栈末尾的警戒缓冲区大小
头文件:
#include <pthread.h>
函数原形:
int pthread_attr_getguardsize(const pthread_attr_t *restrict attr,size_t *restrict guardsize);
int pthread_attr_setguardsize(pthread_attr_t *attr ,size_t *guardsize);
参数:
返回值:
若成功返回0,若失败返回-1。
线程属性guardsize控制着线程栈末尾之后以避免栈溢出的扩展内存大小。这个属性默认设置为PAGESIZE个字节。可以把guardsize线程属性设为0,从而不允许属性的这种特征行为发生:在这种情况下不会提供警戒缓存区。同样地,如果对线程属性stackaddr作了修改,系统就会假设我们会自己管理栈,并使警戒栈缓冲区机制无效,等同于把guardsize线程属性设为0。
- 线程属性(2)
- 线程属性(2)
- 线程-属性分离2
- 线程属性(1)
- 线程属性(1)
- (四十二)线程——线程属性
- linux之线程属性(分离线程)
- 线程属性介绍(二)
- 线程属性(优先级):pthread_attr_t
- 线程属性总结(二)
- Posix多线程笔记(三)—线程属性(2)
- Java多线程(2) 线程的状态和属性
- 线程属性
- 线程属性
- 线程属性
- 线程属性
- 线程属性
- 线程属性
- android 画廊 gallery
- BitMap、Drawable、inputStream及byte[] 互转
- 线程属性(1)
- TRS master agreement(from ISDA)
- 变频器的再生制动
- 线程属性(2)
- Stack基础知识1
- hdu_2602
- linux的时间与时钟中断处理
- yii框架学习(一)
- 查找EBS各模块组件version
- Android + NDK + cygwin 编程
- resolv.conf文件配置相关的案例
- WPF下TextBox允许多行文本的设置