• posix多线程有感线程高级编程(线程属性函数总结)(代码)


    /*
     * thread_attr.c
     *
     * Create a thread using a non-default attributes object,
     * thread_attr. The thread reports its existence, and exits. The
     * attributes object specifies that the thread be created
     * detached, and, if the stacksize attribute is supported, the
     * thread is given a stacksize twice the minimum value.
     */
    #include <limits.h>
    #include <pthread.h>
    #include "errors.h"
    
    /*
     * Thread start routine that reports it ran, and then exits.
     */
    void *thread_routine (void *arg)
    {
        printf ("The thread is here\n");
        return NULL;
    }
    
    int main (int argc, char *argv[])
    {
        pthread_t thread_id;
        pthread_attr_t thread_attr;
        struct sched_param thread_param;
        size_t stack_size;
        int status;
    
        status = pthread_attr_init (&thread_attr);
        if (status != 0)
            err_abort (status, "Create attr");
    
        /*
         * Create a detached thread.
         */
        status = pthread_attr_setdetachstate (
            &thread_attr, PTHREAD_CREATE_DETACHED);
        if (status != 0)
            err_abort (status, "Set detach");
    #ifdef _POSIX_THREAD_ATTR_STACKSIZE
        /*
         * If supported, determine the default stack size and report
         * it, and then select a stack size for the new thread.
         *
         * Note that the standard does not specify the default stack
         * size, and the default value in an attributes object need
         * not be the size that will actually be used.  Solaris 2.5
         * uses a value of 0 to indicate the default.
         */
        status = pthread_attr_getstacksize (&thread_attr, &stack_size);
        if (status != 0)
            err_abort (status, "Get stack size");
        printf ("Default stack size is %u; minimum is %u\n",
            stack_size, PTHREAD_STACK_MIN);
        status = pthread_attr_setstacksize (
            &thread_attr, PTHREAD_STACK_MIN*2);
        if (status != 0)
            err_abort (status, "Set stack size");
    #endif
        status = pthread_create (
            &thread_id, &thread_attr, thread_routine, NULL);
        if (status != 0)
            err_abort (status, "Create thread");
        printf ("Main exiting\n");
        pthread_exit (NULL);
        return 0;
    }


     

  • 相关阅读:
    报错:/usr/lib/gcc/x86_64-linux-gnu/5/include/avx512vlintrin.h(11269): error: argument of type "void *" is incompatible with parameter of type "long long *"
    docker跨平台
    [转载]启发式算法 (Heuristic Algorithms)
    linux软链接的创建、修改和删除
    使用docker部署tomcat|tomcat基础使用第二篇
    Tomat服务器学习
    使用秘钥登录AWS
    Maven基础
    [转载]什么是消融实验
    [转载]基于机器学习的专业级摄影照片处理器
  • 原文地址:https://www.cnblogs.com/wangfengju/p/6173125.html
Copyright © 2020-2023  润新知