zoukankan      html  css  js  c++  java
  • linux 多线程基础4

    六、线程的作用域

           函数pthread_attr_setscopepthread_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_setstacksizepthread_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_setstackaddrpthread_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_getguardsizepthread_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

  • 相关阅读:
    centos7下磁盘空间调整
    centos7下 查看CPU、内存、磁盘的使用情况
    centos7中Spark集群的安装与配置(Hadoop2.6.5+spark2.3.3)
    linux下mysql ---- Host '' is not allowed to connect to this MySQL server
    11-1、多线程
    10-2、对象的序列化和反序列化
    9-1、注解
    8-1、泛型
    7-1、集合
    6-1、异常处理
  • 原文地址:https://www.cnblogs.com/biglucky/p/4062740.html
Copyright © 2011-2022 走看看