Unix环境多线程编程(二)[转]
来源:互联网 发布:视频转换 mac 编辑:程序博客网 时间:2024/06/06 03:37
1.1 线程属性函数
1.1.1 数据类型及总体说明
数据定义头文件 /usr/include/bits/pthreadtypes.h
pthread_attr_t
线程属性。属性对象主要包括是否绑定、是否分离、堆栈地址、堆栈大小、优先级
属性值不能直接设置,须使用相关函数进行操作
每个属性都有属性名,可以单独通过pthread_attr_set属性名 这个函数来更改,通过pthread_attr_get属性名函数获得属性。请看详细api说明。如:
属性:detachstate
函数:int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);
Int pthread_attr_getdetachstate(const pthread_attr_t *attr, int* detachstate);
执行:pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);//设置线程属性为joinable态
线程属性名
detachstate
PTHREAD_CREATE_JOINABLE
PTHREAD_CREATE_DETACHED
默认:PTHREAD_CREATE_JOINABLE
控制创建的线程是joinable态还是detached态
schedpolicy
SCHED_OTHER (regular, non-realtime scheduling)
SCHED_RR (realtime, round-robin)
SCHED_FIFO (realtime, first-in first-out)
默认:SCHED_OTHER
优先级类别
schedparam
默认:0
线程优先级参数
如果schedpolicy的值为schedpolicy此属性无关紧要
线程创建后可修改此属性
inheritsched
PTHREAD_EXPLICIT_SCHED
PTHREAD_INHERIT_SCHED
默认:PTHREAD_EXPLICIT_SCHED
说明此线程优先级是否继承于父线程还是通过上面两个属性确定
scope
PTHREAD_SCOPE_SYSTEM
PTHREAD_SCOPE_PROCESS
默认:PTHREAD_SCOPE_SYSTEM
设置线程绑定状态
部分Linux不支持PTHREAD_SCOPE_ PROCESS,需要查看man
1.1.2 API
1.6. #include <pthread.h>
线程属性初始化的函数
int pthread_attr_init(pthread_attr_t *attr);
返回: 如果成功0, 失败设置 Exxx 到 error
Pthread_attr_init 函数初始化线程属性对象attr,填充所有属性为默认值。这个函数必须在pthread_create函数之前调用,做为pthread_create 函数的第2个参数。属性对象主要包括是否绑定、是否分离、堆栈地址、堆栈大小、优先级。默认的属性为非绑定、非分离、缺省
1.1.3 Example
#include <pthread.h>
pthread_attr_t attr;
pthread_t tid;
/*初始化属性值,均设为默认值*/
pthread_attr_init(&attr);
pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM);
pthread_create(&tid, &attr, (void *) my_function, NULL);
设置线程绑定状态的函数为pthread_attr_setscope,它有两个参数,第一个是指向属性结构的指针,第二个是绑定类型,它有两个取值:PTHREAD_SCOPE_SYSTEM(绑定的)和PTHREAD_SCOPE_PROCESS(非绑定的)
#include <pthread.h>
#include <sched.h>
pthread_attr_t attr;
pthread_t tid;
sched_param param;
int newprio=20;
pthread_attr_init(&attr);
pthread_attr_getschedparam(&attr, ¶m);
param.sched_priority = newprio;
pthread_attr_setschedparam(&attr, ¶m);
pthread_create(&tid, &attr, (void *)myfunction, myarg);
设置线程的优先级,它存放在结构sched_param中。用函数pthread_attr_ getschedparam和函数pthread_attr_setschedparam进行存放,一般说来,我们总是先取优先级,对取得的值修改后再存放回去。
- Unix环境多线程编程(二)[转]
- Unix环境多线程编程(二)
- Unix环境多线程编程(一)[转]
- Unix环境多线程编程(三) [转]
- Unix环境多线程编程(一)
- Unix环境多线程编程(三)
- UNIX环境编程学习笔记(27)——多线程编程(二):控制线程属性
- 《UNIX环境高级编程》多线程同步 pthread_cond_t
- Unix环境高级编程--多线程(一)
- unix 环境高级编程 线程二 同步
- unix高级环境编程(二)-------------------基础知识
- 《Unix环境高级编程》 总结 (二)
- [转]UNIX/LINUX 多线程编程
- 【转】 Unix、Linux 多线程编程
- UNIX编程环境(The UNIX Programming Environment) 备忘录(二)
- UNIX环境高级编程-读书笔记-网络编程(二)
- 多线程 一个mutex互斥量实例(unix环境高级编程)
- Unix环境高级编程学习笔记(七) 多线程
- Linux下的进程通信(IPC) [转]
- UNIX C 多进程编程[转]
- (int)parameter
- 过了国庆,成为上班族2个月
- 创建模块化游戏 I(翻译)(Creating Moddable Games with XML and Scripting Part I)
- Unix环境多线程编程(二)[转]
- C++字符串完全指引之一 —— Win32 字符编码
- Unix环境多线程编程(三) [转]
- Unix环境进程间通信(一)[转]
- UnicodeEncoding HashAlgorithm CryptoConfig BitConverter
- 鱼和水的故事--完整版[转帖]
- Unix环境进程间通信(二)[转]
- #include 和 #include"FileName.h"的区别
- 关于实现搜索、排序问题