zoukankan      html  css  js  c++  java
  • 线程属性

    线程属性pthread_attr_t

    typedef struct

    {

      int  detachstate 线程分离状态

      int schedpolicy 线程调度策略

      struct sched_param schedparam 线程调度参数

      int inheritsched 线程调度继承性

      int scope 线程作用域

      size_t guardsize 线程栈末尾警戒缓冲区大小

      int stackaddr_set

      void * stackaddr 线程栈的位置

      size_t  stacksize 线程栈的大小

    } pthread_attr_t;

    对线程属性进行处理之前必须进行初始化,使用之后去初始化

     

    int pthread_attr_init(pthread_attr_t *attr)
    
    int pthread_attr_destroy(pthread_attr_t *attr)

     

     

    线程分离状态:

    线程分离状态决定线程以怎样的方式终止

    非分离状态终止的线程,可以被其他线程等待,pthread_join函数返回时,线程释放资源

    分离状态的线程,不能被其他线程等待,线程结束后直接释放资源

     

    int pthread_attr_getdetachstate(pthread_attr_t *attr,int *detachstate)
    int pthread_attr_setdetachstate(pthread_attr_t *attr,int detachstate)

     

    detachstate的值:PTHREAD_CREATE_DETACHED

             PTHREAD_CREATE_JOINABLE

    线程继承属性:

    线程的继承属性决定了调度信息是从创建线程的线程中继承,还是使用schedpolic和schedparam属性中设置的调度信息

    int pthread_attr_getinheritsched(pthread_attr_t *attr,int *inheritsched)
    int pthread_attr_setinheritsched(pthread_attr_t *attr,int inheritsched)

    inheritsched的值:PTHREAD_INHERIT_SCHED 新线程将继承创建线程的调度策略和参数

             PTHREAD_EXPLICIT_SCHED 新线程将使用schedpolicy和schedparam作为调度策略和参数

    线程的调度策略:

    SCHED_FIFO:允许一个线程运行直到更高优先级的线程准备好,或直到自己自愿阻塞

    SCHED_RR:如果一个SCHED_RR策略的线程运行超过一段时间没有阻塞,而另外的SCHED_RR线程或SCHED_FIFO线程已经准备好,则运行的线程将被抢占

    SCHED_FIFO和SCHED_RR的几个线程同时等待一个互斥量或条件变量时,高优先级的线程将首先解除阻塞

    int pthread_attr_getschedpolicy(pthread_attr_t *attr,int *schedpolicy)
    int pthread_attr_setschedpolicy(pthread_attr_t *attr,int schedpolicy)

    线程调度参数:

    struct sched_param

    {

      int sched_priority;

    };

    系统支持的最高、最低优先级:

    int sched_get_priority_max(int pri_max)
    int sched_get_priority_min(int pri_min)

    设置调度参数:

    int pthread_attr_getschedparam(pthread_attr_t *attr,struct sched_param *schedparam)
    int pthread_attr_setschedparam(pthread_attr_t *attr,struct sched_prarm schedparam)

    线程作用域:

    线程作用域控制线程是在进程内还是在系统级上竞争资源

    int pthread_attr_getscope(pthread_attr_t *attr,int *scope)
    int pthread_attr_setscope(pthread_attr_t *attr,int scope)

    scope的值:PTHREAD_SCOPE_PROCESS 线程在进程内竞争资源
          PTHREAD_SCOPE_SYSTEM 线程在系统级竞争资源

    线程堆栈:

    堆栈大小:

    int pthread_attr_getstacksize(pthread_attr_t *attr,size_t *stacksize)
    
    int pthread_attr_setstacksize(pthread_attr_t *attr,size_t stacksize)

    堆栈地址:

    int pthread_attr_getstackaddr(pthread_attr_t *attr,void **stackaddr)
    
    int pthread_attr_setstackaddr(pthread_attr_t *attr,void *stackaddr)

    合二为一:

    int pthread_attr_getstack(pthread_attr_t *attr,void **stackaddr,size_t *stacksize)
    
    int pthread_attr_setstack(pthread_attr_t *attr,void *stackaddr,size_t stacksize)

    线程栈末尾的警戒缓冲区大小:

    int pthread_attr_getguardsize(pthread_attr_t *attr,size_t *guardsize)
    
    int pthread_attr_setguardsize(pthread_attr_t *attr,size_t guardsize)
  • 相关阅读:
    poj1321(棋盘问题)
    poj3009(Curling 2.0)
    站点 1访问非本站点下面的web.config文件需要的权限
    VS2010 Web网站发布详解
    服务禁止旁注,安全设置
    在Windows2012下安装SQL Server 2005无法启动服务的解决办法
    Server-U与IIS端口占用问题解决
    Server-U_详细配置
    创建维护计划时,提示“代理XP”组件已作为此服务器安全配置的一部分被关闭
    SQL SERVER 2005如何建立自动备份的维护计划
  • 原文地址:https://www.cnblogs.com/buptlyn/p/4174327.html
Copyright © 2011-2022 走看看