与多进程的区别
每个程序是一个单独的进程,每一个进程内可以开很多线程
开多进程开销较大,开多线程的开销较小
c++开多线程
#include <thread>
thread 变量名(函数名);
锁
一般通过信号量实现
mutex 互斥信号量(互斥锁),同一时刻只能分给一个人
为什么要有锁?多个线程共享一个内存空间,容易出现访问冲突,修改冲突等bug,所以需要锁保证有序的使用内存空间
信号量:P() 信号量-1, V () 信号量+1
信号量 实现 锁、锁 实现 条件变量
mutex m; // 定义一个信号量
condition_variable cv; // 定义一个条件变量
unique_lock<mutex> lck(m); // 传入信号量,加锁
lck.unlock(); // 解锁,解除占用
cv.notify_all(); // 将所有被条件变量睡眠的线程唤醒