• 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;
    }


     

  • 相关阅读:
    canvas-color的几种设置
    canvas-2lineCap.html
    canvas-2lineJoin.html
    canvas-0trasform.html
    总体、个体和简单随机样本
    大数定律
    切比雪夫不等式
    B1032. 挖掘机技术哪家强
    Array(数组)对象-->join() 方法
    Array(数组)对象-->shift() 方法
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6332837.html
Copyright © 2020-2023  润新知