线程间通信有哪些方式

挥发性:
可见性:提供线程之间的可见性。

重新排序:禁止重新排序指令。

原则1 :变量变化立即刷新到主存。

原则2 :使用变量之前读回主存值。

等待/通知机制:
基于等待和通知。

调用等待:线程进入等待队列。

注意:唤醒等待线程。

加盟方式:
线程冻结:当前启动阻塞并等待合并线程完成执行。

保证执行顺序:但是失去了并行的意义。

实现基于:通知等待机制。

线程本地:
内部线程通信:链接当前线程和map。

数据访问:减少参数传递。

主题特点:
轻实体:不拥有系统资源,有TCB。

独立调度:基本单元独立运行。

并发执行:进程中的线程可以同时执行。

共享资源:共享进程地址空间和资源。

选择正确的有线通讯方式,效率高。

线程的几种控制方式以及线程间的几种通信方式

管道:1 9 7 3 年在Unix系统中引入,用于父子进程之间的通信和单向数据流。

著名的管道:1 9 8 3 年出现在Unix系统中,在独立进程之间进行通信。

信号量:1 9 8 4 年,在Unix系统中实现,用于控制对共享资源的访问并同步进程/线程。

消息队列:1 9 8 5 年,在Unix系统中实现,克服了信号和管道的限制,实现了高效的数据传输。

信号:1 9 8 6 年,在Unix系统中定义,用于通知进程发生的事件。

共享内存:1 9 8 7 年用于Unix系统,用于进程间快速通信,效率高。

Socket:1 9 8 9 年,在Unix系统中定义,跨网络进程的通信。

互斥锁:在2 0世纪9 0年代,它被广泛应用于多线程编程中,以保护数据结构免受并发更改的影响。

读/写锁:在2 0世纪9 0年代,它被用来提高读操作的效率并实现多线程读取。

条件变量:与2 0世纪9 0年代的互斥锁结合,实现线程同步。

信号量机制:2 0世纪9 0年代,线程之间的同步,包括未命名和命名信号量。

信号机制:与进程信号类似,用于线程之间的同步和非数据交换。