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, &param) == ){
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的更多相关文章

  1. Linux多线程编程——线程的创建与退出

    POSIX线程标准:该标准定义了创建和操纵线程的一整套API.在类Unix操作系统(Unix.Linux.Mac OS X等)中,都使用Pthreads作为操作系统的线程.Windows操作系统也有其 ...

  2. Linux系统编程 —线程属性

    在之前的章节中,我们在调用pthread_create函数创建线程时,第二个参数(即线程属性)都是设为NULL,即使用默认属性.一般情况下,使用默认属性已经可以解决我们开发过程中的大多数问题. 但是, ...

  3. Linux 多线程编程--线程退出

    今天分析项目中进程中虚存一直增长问题,运行10个小时虚存涨到121G ,RSS占用为16G 非常恐怖. Valgrind测试无内存泄漏. 内存32G 64bit系统信息如下: Linux线程使用方式是 ...

  4. LInux多线程编程----线程特定数据的处理函数

    1.pthread_key_t和pthread_key_create() 线程中特有的线程存储, Thread Specific Data .线程存储有什么用了?他是什么意思了?大家都知道,在多线程程 ...

  5. Linux多线程编程——线程的同步

    POSIX信号量 posix信号量不同于IPC中的信号量  常用的posix信号量函数   #include <semaphore.h> int sem_init(sem_t* sem,i ...

  6. Linux多线程编程小结

     Linux多线程编程小结 前一段时间由于开题的事情一直耽搁了我搞Linux的进度,搞的我之前学的东西都遗忘了,非常烦躁的说,如今抽个时间把之前所学的做个小节.文章内容主要总结于<Linux程序 ...

  7. Linux多线程编程初探

    Linux线程介绍 进程与线程 典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情.有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程 ...

  8. ZT 为什么pthread_cond_t要和pthread_mutex_t同时使用 || pthread/Linux多线程编程

    为什么线程同步的时候pthread_cond_t要和pthread_mutex_t同时使用 (2009-10-27 11:07:23) 转载▼ 标签: 杂谈 分类: 计算机 举一个例子(http:// ...

  9. 【操作系统作业-lab4】 linux 多线程编程和调度器

    linux多线程编程 参考:https://blog.csdn.net/weibo1230123/article/details/81410241 https://blog.csdn.net/skyr ...

随机推荐

  1. 对于页面上下载pdf或者excel按钮的实现

    这个主要是通过      window.open(url + params) url后台给存放的路径,params是参数

  2. kafka manager遇到的一些问题

    1.启动后第一个报错如下: [error] k.m.a.c.BrokerViewCacheActor - Failed to get broker metrics for BrokerIdentity ...

  3. 初步认识AutoMapper转载 https://www.cnblogs.com/fred-bao/p/5700776.html

    初步认识AutoMapper AutoMapper 初步认识AutoMapper 前言 手动映射 使用AutoMapper 创建映射 Conventions 映射到一个已存在的实例对象   前言 通常 ...

  4. EOJ 1058. 挤模具 (多边形面积)

    题目链接:1058. 挤模具 题意 给出模具的底和体积,求模具的高. 思路 模具的底为多边形,因此求出多边形面积,用体积除以底的面积就是答案. 多边形的面积求解见 EOJ 1127. 多边形面积(计算 ...

  5. HBase 入门之数据刷写(Memstore Flush)详细说明

    接触过 HBase 的同学应该对 HBase 写数据的过程比较熟悉(不熟悉也没关系).HBase 写数据(比如 put.delete)的时候,都是写 WAL(假设 WAL 没有被关闭) ,然后将数据写 ...

  6. Centos7使用Python3

    1.安装python3替换python2.7 [root@Python src]# wget https://www.python.org/ftp/python/3.5.4/Python-3.5.4. ...

  7. shell编程2:数组的运用

    Shell 数组 定义数组 在Shell中,用括号来表示数组,数组元素用"空格"符号分割开.定义数组的一般形式为: name=(name1 name2 name3) 复制代码 还可 ...

  8. 使用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  

  9. [轉]User namespaces – available to play!

    User namespaces – available to play! Posted on May 10, 2012by s3hh Over the past few months, Eric Bi ...

  10. js中构造函数的原型添加成员的两种方式

    首先,js中给原型对象添加属性和方法. 方式一:对象的动态特效 给原型对象添加成员 语法:构造函数.prototype.方法名=function (){ } 方式二:替换原型对象(不是覆盖,而是替换, ...