之所以需要自旋锁,是为了保证“原子操作”,请问,在AM57xx中,32位的系统,对于一个 Int32 数据的读、写,其本身是否就已经是“原子操作”? 若多核对同一 Int32 (仅一个)变量访问,是否不需要自旋锁?
yongqing wang:
应该不可能默认即使原子操作,这样效率就会降低吧,共享资源读写的时候类似互斥锁还是有必要的
user5849257:
原子操作的意思是整个过程不可分割,要么全部完成,要么全部失败,换句话说就是执行过程不能被打断,整个执行过程占有CPU资源。至于你说的对一个int32位数来说,它本身就是共享资源,谁都可以操作。如果你去读写这个数,另外一个进程也是可以操作这个数的。比如这个进程的优先级更高,它就会被CPU调度过来运行了,也就是抢占,之前的那个进程就被cpu调度出去了,也就是挂起睡眠了。所以,访问一个int32变量,如果存在资源竞争,就需要自旋锁