zoukankan      html  css  js  c++  java
  • 线程属性的初始化以及销毁

    /*初始化属性
    int pthread_attr_init(pthread_attr_t *tattr);
    函数将对象属性初始化为其缺省值。分配一些存储空间,所以需要下面的函数删除初始化期间分配的存储空间。
    int pthread_attr_destroy(pthread_attr_t *tattr);
    以上两个函数成功都返回 0.*/
    #include <stdlib.h>
    #include <pthread.h>
    #include <stdio.h>
    #include <sched.h>
    void *consumer(void *p)
    {
      static int a = 0;
      printf("<<<<<<<<<<<<<<<<<<<<<(%u),%d
    ", (unsigned)pthread_self(), ++a);
      return NULL;
     }       
     int main(int argc, char *argv[])
    {
            pthread_t  t1, t2, t3;
            int ret;
            pthread_attr_t attr;
           // pthread_attr_init(&attr);
           //没有这句会发生Segmentation fault (core dumped)
           ret = pthread_create(&t1, &attr, consumer, NULL);
            if(ret != 0)
            {
                     printf("create failed,%d
    ", ret);
                     exit(1);
             }       
            pthread_attr_destroy(&attr);
            sleep(1);
        return 0;
    }   
    /*输出结果:<<<<<<<<<<<<<<<<<<<<<(3077286800),1
    注意:属性对象必须初始化,否则属性不能生效,创建线程时将返回错误。
    属性对象被销毁,并不影响线程的属性。
    pthread_attr_init是初始化一个线程对象的属性,需要用pthread_attr_destroy对其去除初始化
    int pthread_attr_init(pthread_attr_t *attr);
    返回0,表示函数初始化对象成功。失败时返回一个错误代码。
    参数:指向一个线程属性的指针。
    attr对应单词attribute 即属性的意思
    init对应单词initialize 即初始化的意思*/
  • 相关阅读:
    Vue插件配置和 后台交互
    Vue项目环境搭建
    数据结构之链表
    数据结构之线性表顺序结构
    leetcode-- Longest Common Prefix
    数据结构之拓扑排序
    数据结构之shell排序
    数据结构之插入排序
    leetcode
    leetcode
  • 原文地址:https://www.cnblogs.com/leijiangtao/p/3995826.html
Copyright © 2011-2022 走看看