LInux多线程编程----线程属性pthread_attr_t
1、每个POSIX线程有一个相连的属性对象来表示属性。线程属性对象的类型是pthread_attr_t,pthread_attr_t 在文件/usr/include/bits/pthreadtypes.h中定义。
2、代码及运行结果:
/*
* pthreadAttr.c
*
* Created on: Aug 17, 2013
* Author: root
*/
#include <stdio.h>
#include <errno.h>
#include <pthread.h>
#include <unistd.h> void * my_thread(void * arg){
int retval = ;
pthread_attr_t attr;
struct sched_param param;
size_t stacksize;
int detachstate;
int scope;
int inherit;
int policy; if(pthread_attr_init(&attr) == ){
if(pthread_attr_getstacksize(&attr, &stacksize) == ){
printf("StackSize: %d\n", stacksize);
}
if(pthread_attr_getdetachstate(&attr, &detachstate) == ){
if(detachstate == PTHREAD_CREATE_JOINABLE){
printf("DetachState:PTHREAD_CREATE_JOINABLE.\n");
}
if(detachstate == PTHREAD_CREATE_DETACHED){
printf("DetachState:PTHREAD_CREATE_DETACHED.\n");
}
}
if(pthread_attr_getscope(&attr, &scope) == ){
if(scope == PTHREAD_SCOPE_PROCESS){
printf("Scope:PTHREAD_SCOPE_PROCESS\n");
}
if(scope == PTHREAD_SCOPE_SYSTEM){
printf("Scope:PTHREAD_SCOPE_SYSTEM\n");
}
}
if(pthread_attr_getinheritsched(&attr, &inherit) == ){
if(inherit == PTHREAD_INHERIT_SCHED){
printf("InheritSched:PHREAD_INHERIT_SCHED\n");
}
if(inherit == PTHREAD_EXPLICIT_SCHED){
printf("InheritSched:PHTREAD_EXPLICIT_SCHED\n");
}
}
if(pthread_attr_getschedpolicy(&attr, &policy) == ){
if(policy == SCHED_FIFO){
printf("schedPolicy:SCHED_FIFO\n");
}
if(policy == SCHED_RR){
printf("SchedPolicy:SCHED_RR\n");
}
else{
printf("SchedPolicy:SCHED_OTHER\n");
}
}
if(pthread_attr_getschedparam(&attr, ¶m) == ){
printf("SchedPriority:%d\n", param.__sched_priority);
}
pthread_attr_destroy(&attr);
} pthread_exit(&retval);
} int main(){
int count;
pthread_t thread;
int *retval;
if(pthread_create(&thread, NULL, my_thread, (void*)NULL) != ){
printf("Count not create thread!\n");
return -;
}
if(pthread_join(thread, (void **)(&retval)) != ){
printf("No thread to join!\n");
return -;
}
return ;
}
运行结果:
LInux多线程编程----线程属性pthread_attr_t的更多相关文章
- Linux多线程编程——线程的创建与退出
POSIX线程标准:该标准定义了创建和操纵线程的一整套API.在类Unix操作系统(Unix.Linux.Mac OS X等)中,都使用Pthreads作为操作系统的线程.Windows操作系统也有其 ...
- Linux系统编程 —线程属性
在之前的章节中,我们在调用pthread_create函数创建线程时,第二个参数(即线程属性)都是设为NULL,即使用默认属性.一般情况下,使用默认属性已经可以解决我们开发过程中的大多数问题. 但是, ...
- Linux 多线程编程--线程退出
今天分析项目中进程中虚存一直增长问题,运行10个小时虚存涨到121G ,RSS占用为16G 非常恐怖. Valgrind测试无内存泄漏. 内存32G 64bit系统信息如下: Linux线程使用方式是 ...
- LInux多线程编程----线程特定数据的处理函数
1.pthread_key_t和pthread_key_create() 线程中特有的线程存储, Thread Specific Data .线程存储有什么用了?他是什么意思了?大家都知道,在多线程程 ...
- Linux多线程编程——线程的同步
POSIX信号量 posix信号量不同于IPC中的信号量 常用的posix信号量函数 #include <semaphore.h> int sem_init(sem_t* sem,i ...
- Linux多线程编程小结
Linux多线程编程小结 前一段时间由于开题的事情一直耽搁了我搞Linux的进度,搞的我之前学的东西都遗忘了,非常烦躁的说,如今抽个时间把之前所学的做个小节.文章内容主要总结于<Linux程序 ...
- Linux多线程编程初探
Linux线程介绍 进程与线程 典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情.有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程 ...
- ZT 为什么pthread_cond_t要和pthread_mutex_t同时使用 || pthread/Linux多线程编程
为什么线程同步的时候pthread_cond_t要和pthread_mutex_t同时使用 (2009-10-27 11:07:23) 转载▼ 标签: 杂谈 分类: 计算机 举一个例子(http:// ...
- 【操作系统作业-lab4】 linux 多线程编程和调度器
linux多线程编程 参考:https://blog.csdn.net/weibo1230123/article/details/81410241 https://blog.csdn.net/skyr ...
随机推荐
- 对于页面上下载pdf或者excel按钮的实现
这个主要是通过 window.open(url + params) url后台给存放的路径,params是参数
- kafka manager遇到的一些问题
1.启动后第一个报错如下: [error] k.m.a.c.BrokerViewCacheActor - Failed to get broker metrics for BrokerIdentity ...
- 初步认识AutoMapper转载 https://www.cnblogs.com/fred-bao/p/5700776.html
初步认识AutoMapper AutoMapper 初步认识AutoMapper 前言 手动映射 使用AutoMapper 创建映射 Conventions 映射到一个已存在的实例对象 前言 通常 ...
- EOJ 1058. 挤模具 (多边形面积)
题目链接:1058. 挤模具 题意 给出模具的底和体积,求模具的高. 思路 模具的底为多边形,因此求出多边形面积,用体积除以底的面积就是答案. 多边形的面积求解见 EOJ 1127. 多边形面积(计算 ...
- HBase 入门之数据刷写(Memstore Flush)详细说明
接触过 HBase 的同学应该对 HBase 写数据的过程比较熟悉(不熟悉也没关系).HBase 写数据(比如 put.delete)的时候,都是写 WAL(假设 WAL 没有被关闭) ,然后将数据写 ...
- Centos7使用Python3
1.安装python3替换python2.7 [root@Python src]# wget https://www.python.org/ftp/python/3.5.4/Python-3.5.4. ...
- shell编程2:数组的运用
Shell 数组 定义数组 在Shell中,用括号来表示数组,数组元素用"空格"符号分割开.定义数组的一般形式为: name=(name1 name2 name3) 复制代码 还可 ...
- 使用pip 时报错 Fatal error in launcher: Unable to create process using '"D:\pytghon2.7\python.exe" "D:\python2.7\S
无法创建使用pip.exe创建进程,说白了就是无法启动pip安装插件. 解决方法升级pip: python -m pip install -U pip
- [轉]User namespaces – available to play!
User namespaces – available to play! Posted on May 10, 2012by s3hh Over the past few months, Eric Bi ...
- js中构造函数的原型添加成员的两种方式
首先,js中给原型对象添加属性和方法. 方式一:对象的动态特效 给原型对象添加成员 语法:构造函数.prototype.方法名=function (){ } 方式二:替换原型对象(不是覆盖,而是替换, ...