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 ...
随机推荐
- <Jmeter入门不放弃>之<3.两种常见录制脚本的方法>
关于录制,我想表达的是,并不要以为他很低端,解决需求才是王道,大家这里参考学习的时候,我就不在这里配截图了,因为需要你打开工具根据文档自己去找,才有印象,大家一定要启动JMeter!跟着理解操作 录制 ...
- bash: service: command not found 错误的解决方法
service命令是要用ROOT用户来执行的,而出错的用户是用su root切换到ROOT用户下,这个命令没有也不会把环境带过去! 用如下命令就不会出错了:su - root 注意:su 后面是一个空 ...
- Linux指定用户运行程序
参考:http://blog.useasp.net/archive/2015/07/29/run-command-as-different-user-on-linux.aspx 在实际中,我们有时候想 ...
- The Preliminary Contest for ICPC Asia Shanghai 2019 (B L )
B. Light bulbs 思路:差分 + 离散化, 好不容易懂了差分却没想到离散化,还是要罗老板出马..... AC代码: #include<bits/stdc++.h> using ...
- jQuery选择器我犯的错误(原创)
jQuery的选择器十分强大,但是在使用jQuery选择器的时候一定要十分小心,空格.冒号.引号到处都是坑,老手也不能避免,只能勤加练习,熟能生巧,掌握规律,为了练习,凡是到选择器的地方我都自己先敲, ...
- 关于软件IntelliJ IDEA的使用技巧(二)
二,IntelliJ IDEA的工具栏介绍 2,IntelliJ IDEA菜单栏 (5)code编码 ✌1.Override Methods:覆盖方法 ✌2.Implement Methods:实现方 ...
- zabbix监控linux内存
通过free -m查看当前内存 可用内存:Available memory=free+buffers+cached,即31068=759+66+30243 已用内存:Used memory=used- ...
- __user表示是一个user mode的pointer,所以kernel不可能直接使用。
__user表示是一个用户空间的指针,所以kernel不可能直接使用. #ifdef __CHECKER__# define __user __attribute__((noderef, addres ...
- netease-cloud-music : 依赖: libqt5x11extras5 (>= 5.1.0) 但是它将不会被安装
修复一下依赖关系: sudo apt-get install -f #或者:sudo apt-get -f install 上面两条是修复依赖关系(depends)的命令,就是假如你的系统上有某个pa ...
- input输入框数字转带千分位的字符串
数字转带千分位的字符串 思路 先获取要转换的数字,对其进行分割 小数部分具体需要保留多少位,具体处理 整数部分用正则做替换 将小数部分和整数部分合计 代码 注意: 本文是基于 jQuery 写的,稍稍 ...