深入理解计算机系统
进程
地址空间独立,但数据共享困难。
IPC(进程间通信): 管道、存储器、信号量
I/O多路复用
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
线程
int pthread_create(pthread_t thread, const pthread_attr_t *attr, void *(start_routine) (void ), void *arg);
pthread_t pthread_self();
int pthread_cancel(pthread_t thread);
void pthread_exit(void *retval);
int pthread_join(pthread_t thread, void **retval);
int pthread_detach(pthread_t thread);
int pthread_once(pthread_once_t *once_control, void (init_routine)(void));
主线 pthread_exit会等子线程结束,pthread_once只执行一次,pthread_detach后不会被杀,死后由系统回收。
信号量
int sem_init(sem_t *sem, int pshared, unsigned int value);
int sem_wait(sem_t *sem);//P
int sem_post(sem_t *sem);//V
生产者-消费者
缓冲区的槽位是动态变化
读者-写者
// 读者优先