Notes

配置 NSThread 属性

配置线程的栈大小

配置线程内存储空间大小

每个线程内部都会维护一个字典。这个字典存储了线程执行过程中所需要的数据

而 Cocoa 体系与 POSIX 体系使用不同的方法存储这个字典,因此,修改时也需要使用不同的方法

配置线程的 detached 状态

大多数高级的线程技术都是默认创建 detached 线程,就是那种运行完成之后,系统自动回收其资源

但还有另外一种线程,joinable 线程,这里直译一下就是可接入的线程(这翻译随便理解一下就算了)

一般来说,对于 joinable 线程,就算在它运行完成之后,系统也不会自动回收它的资源,而是要等到有另外一个线程 join 了之后,系统才会去回收

于是,对于 joinable 线程,一个简化的工作流程是这样的,假设 joinable 线程为 A, 另外一个 join 的线程为 B

  1. A 执行完成,即将 exit, 调用 pthread_exit 并将返回的数据传到这个函数中,但此时,系统并不会去回收 A 的资源,因为还没有另外一个线程 join
  2. B 来了,通过调用 pthread_join 函数,将 A 传递出来的数据拿到,此时 B 继续执行,而现在,系统可以去回收 A 的资源了

于是,我们可以清晰可以看到,joinable 线程实际上是在运行结束后,还有等到其产生的数据有其他线程认领了之后,才算是真正的完成,被系统回收资源

而唯一可以创建 joinable 线程的方法是使用 POSIX 线程,而 POSIX 线程模型,默认创建的就是 joinable 线程。

改变 detached 状态

配置线程优先级