【1】复习
线程:基本概念和特点:
创建线程:pthread_create
线程退出:pthread_exit
线程阻塞:pthread_join
gcc xx.c -lpthread
同步:多个线程按照约定的顺序
信号量
初始化:sem_init
p操作:申请资源sem_wait
v操作: 释放资源sem_post
互斥:多个线程执行时只能有一个线程来访问临界资源
互斥锁
初始化:pthread_mutex_init
上锁:pthread_mutex_lock
解锁:pthread_mutex_unlock
条件变量:一般跟互斥锁
初始化:pthread_cond_init
等待:pthread_cond_wait
条件产生:pthread_cond_signal
【2】进程间通信:
传统的进程间通信方式:
无名管道、有名管道、信号
system V IPC对象:
共享内存、信号灯集、消息队列
BSD:
套接字(socket)
【3】无名管道:
1.特点:
1)只能用于具有亲缘关系的进程之间的通信
2)半双工的通信模式,具有固定的读端和写端
3)管道可以看成是一种特殊的文件,对于它的读写可以使用文件IO如read、write函数。
4)管道是基于文件描述符的通信方式。当一个管道建立时,它会创建两个文件描述符
fd[0]和fd[1]。其中fd[0]固定用于读管道,而fd[1]固定用于写管道。
2.函数
int pipe(int fd[2])
功能:创建无名管道
参数:文件描述符 fd[0]:读端 fd[1]:写端
返回值:成功 0
失败 -1