Posix多线程编程学习笔记(二)—线程属性(3)
六、线程的作用域
函数pthread_attr_setscope和pthread_attr_getscope分别用来设置和得到线程的作用域,这两个函数的定义如下:
7.
名称:: |
pthread_attr_setscope pthread_attr_getscope |
功能: |
获得/设置线程的作用域 |
头文件: |
#include <pthread.h> |
函数原形: |
int pthread_attr_setscope(pthread_attr_t *attr,int scope); int pthread_attr_getscope(const pthread_attr_t *attr,int *scope); |
参数: |
attr 线程属性变量 scope 线程的作用域 |
返回值: |
若成功返回0,若失败返回-1。 |
这两个函数具有两个参数,第1个是指向属性对象的指针,第2个是作用域或指向作用域的指针,作用域控制线程是否在进程内或在系统级上竞争资源,可能的值是PTHREAD_SCOPE_PROCESS(进程内竞争资源)PTHREAD_SCOPE_SYSTEM.(系统级上竞争资源)。
七、线程堆栈的大小
函数pthread_attr_setstacksize和pthread_attr_getstacksize分别用来设置和得到线程堆栈的大小,这两个函数的定义如下所示:
8.
名称:: |
pthread_attr_getdetstacksize pthread_attr_setstacksize |
功能: |
获得/修改线程栈的大小 |
头文件: |
#include <pthread.h> |
函数原形: |
int pthread_attr_getstacksize(const pthread_attr_t *restrict attr,size_t *restrict stacksize); int pthread_attr_setstacksize(pthread_attr_t *attr ,size_t *stacksize); |
参数: |
attr 线程属性变量 stacksize 堆栈大小 |
返回值: |
若成功返回0,若失败返回-1。 |
这两个参数具有两个参数,第1个是指向属性对象的指针,第2个是堆栈大小或指向堆栈大小的指针
如果希望改变栈的默认大小,但又不想自己处理线程栈的分配问题,这时使用pthread_attr_setstacksize函数就非常用用。
八、线程堆栈的地址
函数pthread_attr_setstackaddr和pthread_attr_getstackaddr分别用来设置和得到线程堆栈的位置,这两个函数的定义如下:
9.
名称:: |
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分别用来设置和得到线程栈末尾的警戒缓冲区大小,这两个函数的定义如下:
10.
名称:: |
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。
Posix多线程编程学习笔记(二)—线程属性(3)相关推荐
- 多线程编程学习笔记——线程池(二)
接上文 多线程编程学习笔记--线程池(一) 三.线程池与并行度 此示例是学习如何应用线程池实现大量的操作,及与创建大量线程进行工作的区别. 1. 代码如下 using System; using Sy ...
- 多线程编程学习笔记——任务并行库(二)
接上文 多线程编程学习笔记--任务并行库(一) 三. 组合任务 本示例是学习如何设置相互依赖的任务.我们学习如何创建一个任务的子任务,这个子任务必须在父任务执行结束之后,再执行. 1,示例代码如下 ...
- 多线程编程学习笔记——任务并行库(三)
接上文 多线程编程学习笔记--任务并行库(一) 接上文 多线程编程学习笔记--任务并行库(二) 六. 实现取消选项 本示例学习如何实现基于Task的异步操作进行取消流程,以及在任务真正运行前如何知 ...
- 多线程编程学习笔记——async和await(三)
接上文 多线程编程学习笔记--async和await(一) 接上文 多线程编程学习笔记--async和await(二) 五. 处理异步操作中的异常 本示例学习如何在异步函数中处理异常,学习如何对多 ...
- Linux与C++11多线程编程(学习笔记)
多线程编程与资源同步 在Windows下,主线程退出后,子线程也会被关闭; 在Linux下,主线程退出后,系统不会关闭子线程,这样就产生了僵尸进程 3.2.1创建线程 Linux 线程的创建 #inc ...
- 多线程编程学习笔记——使用并发集合(三)
接上文 多线程编程学习笔记--使用并发集合(一) 接上文 多线程编程学习笔记--使用并发集合(二) 四. 使用ConcurrentBag创建一个可扩展的爬虫 本示例在多个独立的即可生产任务又可消费 ...
- 【多线程编程学习笔记6】终止线程执行,千万别踩这个坑!
申明:本学习笔记是在该教程的基础上结合自己的学习情况进行的总结,不是原创,想要看原版的请看C语言中文网的多线程编程(C语言+Linux),该网站有很多好的编程学习教程,尤其是关于C语言的. 在< ...
- 网易云课堂微专业--Java高级开发工程师--多线程并发编程--学习笔记(二)
文章目录 第一章 多线程并发编程 第二节 线程安全问题 1.2.1 线程安全之可见性问题 多线程中的问题 从内存结构到内存模型 工作内存缓存 指令重排序 内存模型的含义 Shared Variable ...
- python3多线程编程_Python 3多线程编程学习笔记-基础篇
本文是学习<Python核心编程>的学习笔记,介绍了Python中的全局解释器锁和常用的两个线程模块:thread, threading,并对比他们的优缺点和给出简单的列子. 全局解释器锁 ...
最新文章
- 局部加权线性回归(Local Weighted Linear Regression)+局部加权回归+局部线性回归
- python要不要装pycharm-python安装教程 Pycharm安装详细教程
- V神又在操心区块链技术落地,以太坊大涨!
- mysql中需要提交的操作_MySQL常用操作及基础知识
- 靶场练习第二十二天~vulnhub靶场之Momentum-2
- 一份从入门到精通NLP的完整指南 | NLPer
- bert 多义词_BERT之后,GLUE基准升级为SuperGLUE:难度更大
- html 图片墙效果,基于html5实现的图片墙效果
- 可执行镜像——开发环境的Docker化之路
- java中Long的比较
- 尽量少一点甲方思维,也尽量少一点弱势方思维
- coreldraw x5 选择工具快捷键_CorelDRAW设置和优化提高工作效率
- Java 理论与实践: 处理 InterruptedException(转)
- 几个IE与Firefox的兼容性问题 (一、网络转载)
- 私活后的 WPF 设计经验总结
- 遇到ffmpeg错误:non monotonically increasing dts to muxer in stream
- 海通证券金融云思考与实践(上)
- 全国省、市、县(区)编码表
- Echarts使用教程
- Python+OpenCV3.3图像处理视频教程-贾志刚-专题视频课程
热门文章
- (电脑问题) win10飞行模式无法关闭和突然连接不上网络解决方法
- 解决aria2下载磁力链接或bt文件时没有速度或速度为0
- 五步移相法matlab程序_用MATLAB软件对逆变电路移相调压进行仿真,30°,60°,90°的波形,并用分段分析法分析其原理_学小易找答案...
- BootStrap之标签页切换
- AJAX 请求 NIDE 搭建简单服务
- springboot发送邮件(QQ邮箱)
- 利用OneDNS同步chrome数据
- vue 分享给好友 点击分享按钮_点击网页分享按钮,触发微信分享功能
- Centos6.4忘记密码 单机下修改root密码
- minigui3.2 安装教程