进程之间通讯用什么:
套接字、信号处理器、共享内存、信号量、文件。
线程之间通讯用什么:
线程的好处:
降低开发维护成本,提高程序性能,提高资源利用率和系统吞吐量。
线程带来的风险:
线程安全问题:永远不要发生糟糕的事情
线程的活跃性问题:某件正确的事情最终会发生。比如,死锁 饥饿 活锁(不明白)
性能问题:
上下文切换开销:
保存和恢复上下文
丢失局部性
cpu化时间在线程调度
线程共享数据时,必须同步,会抑制编译器优化,使内存缓冲区数据失效,增加共享内存总线同步流量。
同步方式:
synchronized
volatile
Explicit Lock
原子变量
同步问题的解决方式:
不在线程之间共享状态变量
将状态变量修改位不可变变量
在访问状态变量时使用同步
竞态条件:
不恰当的执行时序而出现不正确的结果叫做竞态条件,Race Condition。
当某个计算的正确性取决于多个线程交替执行的时序时,就会发生竞态条件。
常见的竞态条件类型就是先检查后执行(check-then-act),通过一个可能失效的观测结果(重点是这个)来决定下一步的动作的情况。
时间: 2024-10-07 21:13:16