TLPI: Ch31

 24th March 2021 at 2:28pm

PDF 及笔记

电脑上如果 PDF 不展示或者展示不正常,使用 Chrome 并安装 PDF Viewer 插件。其他情况请下载文件查看:tlpi-ch31

视频讲解

线程安全:

线程专有数据(thread-specific data)及线程本地数据(thread-local data):

后续的思考:thread-specific data 的主要用处在于,让线程在其生命周期内有一块专有的堆上的内存。对比其他几种方式:

  • 在线程函数内使用自动变量:变量在函数结束(而不是线程结束)时就被销毁
  • 在线程函数内使用 malloc 分配堆上内存:需要在函数结束(而不是线程结束)前 free 该内存,不然会引起内存泄露
  • 使用全局变量:全局变量的生命周期比线程长;无法是线程独享,各线程会互相覆盖;使用时需要加锁

因此 thread-specific data 是好的解决方法,这块内存随着进程创建而创建、销毁而销毁。

而 thread-local storage 则更进一步,使得你不需要去 malloc / free 这块 buffer。它的底层实现我暂不了解。