一、原子操作
原子操作是不可被中断的、不可分割的单个操作。
二、为了实现一个互斥,自己定义一个变量作为标记来作为一个资源只有一个使用者行不行?
不行。如果在一个线程正持有锁时(2处),线程上下文发生切换,切换到另一个线程,那么这个另一个线程也可能通过 if 条件进入临界区,导致两个线程同时访问临界区。
int flag =0;
if(flag == 0) // 2
{
flag = 1; //3
//操作临界区;
flag = 0;
}
三、进程上下文
进程上下文:是一个进程在某个时间点的当前状态。
当一个进程在执行时,CPU的所有寄存器中的值、进程的状态以及堆栈中的内容被称为该进程的上下文。