这些问题仅限于 X86/LINUX 环境。
一个线程写一个带锁的变量,其他线程读取这个变量没有锁。当写线程解锁时,其他线程是否可以立即读取新值?
volatile int a=0;
/* thread 1(write) */
lock();
a = 10;
unlock();
/* thread 2(read) */
printf("%d",a);
一个线程读取一个带锁的变量,另一个线程不带锁地写入这个变量。当read thread read after write完成后,是否可以立即读取新值?
volatile int a=0;
/* thread 1(read) */
lock();
printf("%d",a);
unlock();
/* thread 2(write) */
a = 10;