zoukankan      html  css  js  c++  java
  • 线程属性与调度学习

    线程属性:

    1.线程的分离状态

      线程的分离状态决定一个线程以什么样的方式来终止自己。非分离的线程终止时,其线程ID和退出状态将保留,直到另外一个线程调用pthread_join.分离的线程在当它终止时,所有的资源将释放,我们不能等待它终止。

    设置线程分离状态的函数为 pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate)。第二个参数可选为PTHREAD_CREATE_DETACHED(分离线程)和 PTHREAD _CREATE_JOINABLE(非分离线程)。这里要注意的一点是,如果设置一个线程为分离
     
    线程,而这个线程运行又非常快,它很可能在 pthread_create函数返回之前就终止了,它终止以后就可能将线程号和系统资源移交给其他的线程使用,这样调用pthread_create的线程就得到了错误的线程号。要避免这种情况可以采取一定的同步措施,最简单的方法之一是
     
    可以在被创建的线程里调用 pthread_cond_timewait函数,让这个线程等待一会儿,留出足够的时间让函数pthread_create返回。设置一段等待时间,是在多线程编程里常用的方法。(https://www.cnblogs.com/lidabo/p/5009249.html)

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

    3.线程栈的最低地址

    4.线程栈的大小

    5.scope属性(表明是与系统中所有线程竞争cpu还是和本进程中的其他线程竞争cpu)

    创建一个以非分离态运行的线程:

    void createThread(void)

    {

      pthread_attr_t threadAttr;

      pthread_t mThread;

      if (!pthread_attr_init(&threadAttr))
            {
                if (!pthread_attr_setdetachstate(&threadAttr, PTHREAD_CREATE_JOINABLE))
                {
                    if (!pthread_create(&mThread, &threadAttr, threadFunc, this))
                    {
                        printf("create thread success! ");
                    }
                }
                pthread_attr_destroy(&threadAttr);
            }

    }

    2 . 线程优先级设置

    pthread_attr_t threadAttr;
    pthread_t mThread = pthread_self();

    if (!pthread_attr_init(&threadAttr))

    {

      newprio = 15;

      int schedPolicy;
           sched_param schedParam;

      if (!pthread_getschedparam(mThread, &schedPolicy, &schedParam))

      {

        param.sched_priority=newprio;

        if (!pthread_setschedparam(mThread, schedPolicy, &schedParam))

        {

            printf("thread priority set success! ");

        }

      }

    }

    pthread_attr_destroy(&threadAttr);

  • 相关阅读:
    有效的工作,小记
    快排,做个笔记
    git在vs2017中的使用
    正则匹配指定字符之间的内容,并替换(多个匹配替换)
    记一个JS树结构路径查找
    追赶法求三对角矩阵
    vs 2010 Cannot find or open the PDB file
    mysql学习笔记6——用phpmyadmin和在腾讯微云中创建数据库
    mysql学习笔记5
    mysql学习笔记4
  • 原文地址:https://www.cnblogs.com/doulcl/p/11350573.html
Copyright © 2011-2022 走看看