• 线程属性与调度学习


    线程属性:

    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);

  • 相关阅读:
    java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.views.login_jsp
    安装eclipse插件,很慢终于找到了解决的方法
    开发辅助网站---programcreek
    java--遇到NoSuchMethodError通用解决思路
    详解SpringBoot 添加对JSP的支持(附常见坑点)
    springboot 配置jsp支持
    JS前端取得并解析后台服务器返回的JSON数据的方法
    ajax接收json数据到js解析
    1 problem was encountered while building the effective model [FATAL] Non-parseable POM F:MavenRepositoryorgapachemavenpluginsmaven-resources-plugin2.6maven-resources-plugin-2.6.pom: start tag
    新装mvn建第一个项目报错org.apache.maven.plugins:maven-resources-plugin:2.6
  • 原文地址:https://www.cnblogs.com/doulcl/p/11350573.html
Copyright © 2020-2023  润新知