线程间通信方法
线程间通信目的主要是用于线程同步,所以线程没有像进程通信中的用于数据交换的通信机制。两个进程间的两个线程通信,相当于进程间通信。一个进程中两个线程间的通信方式如下:
- 锁机制:包括互斥锁、读写锁。互斥锁可以保护共享数据的修改,如果线程正在等待共享数据的某个条件出现,仅用互斥锁的话就需要反复进行锁定解锁,以检查值的变化,这样将频繁查询的效率非常低。
- 条件变量:条件变量可以让等待共享数据条件的线程进入休眠,并在条件达成时唤醒等待线程,提供一种更高效的线程同步方式。条件变量一般和互斥锁同时使用,提供一种更高效的线程同步方式。
- 信号量机制:无名进程信号量和命名线程信号量。信号量主要通过P/V操作用于线程间的同步和互斥。