一、线程效率
- 文件描述符表
- 每种信号的处理方式
- 当前工作目录
- 用户ID和组ID
内存地址空间 (.text/.data/.bss/heap/共享库)
非共享资源
线程id
- 处理器现场和栈指针(内核栈)
- 独立的栈空间(用户空间栈)
- errno变量
- 信号屏蔽字
- 调度优先级
2.2 概念
线程安全:简单来说线程安全就是多个线程并发同一段代码时,不会出现不同的结果,我们就可以说该线程是安全的;
线程不安全:说完了线程安全,线程不安全的问题就很好解释,如果多线程并发执行时会产生不同的结果,则该线程就是不安全的。
线程安全产生的原因:大多是因为对全局变量和静态变量的操作
常见的线程不安全的函数
(1)不保护共享变量的函数
(2)函数状态随着被调用,状态发生变化的函数
(3)返回指向静态变量指针的函数
(4)调用线程不安全函数的函数
常见的线程安全的情况
(1)每个线程对全局变量或者静态变量只有读取的权限,而没有写入的权限,一般来说这些线程是安全的;
(2)类或者接口对于线程来说都是原子操作;
(3)多个线程之间的切换不会导致该接口的执行结果存在二义性;