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

来源:互联网 发布:淘宝买东西返利软件 编辑:程序博客网 时间:2024/06/07 05:11
/* * 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;}


 

 

 

原创粉丝点击