同步机制
- 互斥锁(Mutex):互斥锁用于保护临界区资源,确保同一时刻只有一个线程能访问特定资源。
- 读写锁(Read-Write Lock):允许多个读者同时访问,但在写者访问时,其他所有读写者都将阻塞。
- 条件变量(Conditional Variable):线程间同步的另一种方式,它可以允许某些情况下的线程有序地访问共享数据。
- 信号量(Semaphore):原始信号量和 POSIX 信号量是 Linux 提供的两种信号量。
- 自旋锁(spinlock):当锁已经被占用时,继续尝试获取锁,直到成功为止。
- 屏障(barrier):确保所有进程在继续执行前达到某个点。
异步机制
- 异步IO(AIO):在发起IO请求后,立即返回,不阻塞当前进程或线程。当IO操作完成后,再通知用户程序。
- 信号(Signal):当某些事件发生时,系统会发送信号给进程。对信号的处理可以是忽略、捕捉(指定处理函数)、执行默认操作等。
- 回调函数:在某些操作完成后,调用预先定义的函数。
- epoll/select/poll异步IO模型:Linux下的多路复用IO模型,可以同时监控多个文件描述符的读写状态,当文件描述符准备好后,通过回调通知应用程序。