APUE读书笔记-第十二章-线程控制

  1. 初始化、销毁属性对象,每个属性都有 从属性对象中获取属性值、设置属性值两个个函数
  2. 实现线程分离的两种方法:(1)使用pthread_detach函数(2)修改pthread_attr_t结构中的detachstate属性(使用pthread_attr_setdetachstate函数),让线程一开始就处于分离状态
  3. 线程分离后中无法获取该线程的终止状态,该线程退出时它所占的资源由操作系统回收
  4. 如果调用pthread_attr_destory失败,必须销毁刚刚创建的线程,也许该线程已经开始运行。最坏情况,如果pthread_attr_init已经分配了内存空间,就会有少量的内存泄露,如果pthread_attr_init成功地对线程属性进行了初始化,之后的pthread_attr_destory清理工作失败,那么将没有任何补救措施,因为线程属性结构对应用程序是不透明的
  5. stackaddr被定义为栈的最低内存地址,对于栈是从高地址向低地址方向增长的处理器结构来说,stackaddr属性将是栈的结尾位置
  6. 如果修改了stackaddr,系统就认为我们将自己管理栈,进而使栈警戒缓冲区机制无效,等同于把guardsize设置为0
  7. 如果一个函数可以在相同的时间点被多个线程安全地调用(可重入),就称该函数是线程安全的
  8. 线程在取消请求发出后还是继续运行,知道线程到达某个取消点,取消点是线程检查它是否被取消的一个位置

你可能感兴趣的:(APUE)