一、线程进程相关
1. 什么是线程同步?
2. 线程同步的方法有哪几种?分别怎么使用?为什么要用锁?
(1)互斥锁(Mutex): 互斥锁用于提供对共享资源的独占访问。如果一个线程锁定了互斥锁,其他线程必须等待直到互斥锁被解锁才能访问资源。
(2)信号量(Semaphore): 信号量是一个更高层次的同步机制。它可以允许多个线程同时访问相同的资源,但是同时访问资源的最大线程数量是有限的,由信号量的值决定。
(3)条件变量(Condition Variable): 条件变量用于线程间的通知。如果一个线程中的某个条件不满足,它就可以在条件变量上等待,当条件满足时,另一个线程可以通过条件变量来通知等待的线程。
(4) 读写锁(Read-Write Lock): 读写锁允许并发地读取资源,但是写入资源时需要独占访问。它适用于读操作远多于写操作的情况。
(5) 自旋锁(Spinlock): 自旋锁在等待解锁时不会使线程进入休眠状态,而是在循环中一直检测锁的状态。这避免了线程调度开销,但在等待时间较长的情况下会浪费CPU资源。
(6) 屏障(Barrier): 屏障用来同步一组线程,让它们在所有线程都到达某个点之前都不会执行后续的操作。
(7) 事件(Event): 事件类似于信号,是用来通知一个线程或多个线程某个条件已经满足。事件通常有两种状态:已设置和未设置。
(8) 原子操作(Atomic Operation):原子操作是一种不可被中断的操作,确保了即使多个线程尝试同时执行相同的操作,每次也只有一个操作会被执行。
二、寄存器按位操作
三、驱动框架代码