关于锁的有关问题-cpu对同一硬件接口寄存器访问

关于锁的问题---cpu对同一硬件接口寄存器访问
很多人可能都遇到过这样的情景:
1个设备,有一个按键,一个灯,一个外部io口,他们都是接到同一gpio组的不同位上的。
然后按键处于中断模式,可能随时被按下,需要cpu需要清除gpio的对应位。
灯一直按照遇到的频率闪烁,一般不会被改变。
外部io接口会在特定的情况切换gpio对应位的io模式。
3个线程独立控制3个设备。

好吧,问题来了,他们都属于同一组gpio,也就是说对cpu来说,3个设备在io空间内部这3个设备都是在同一个io空间,也就是说属于共享资源,但是属于该io空间的不同位上。每次操作都是各设各的位,互不影响。 这种情况下,多核cpu是否需要加锁,单核cpu是否需要禁抢占?
------解决方案--------------------
要加锁或临时关闭中断
------解决方案--------------------
关于锁的有关问题-cpu对同一硬件接口寄存器访问
------解决方案--------------------
这相当于是一个原子操作,加锁或者是进入临界区,操作完成后,再解锁或者是退出临界区。

引用:
很多人可能都遇到过这样的情景:
1个设备,有一个按键,一个灯,一个外部io口,他们都是接到同一gpio组的不同位上的。
然后按键处于中断模式,可能随时被按下,需要cpu需要清除gpio的对应位。
灯一直按照遇到的频率闪烁,一般不会被改变。
外部io接口会在特定的情况切换gpio对应位的io模式。
3个线程独立控制3个设备。

好吧,问题来了,他们都属于同一组gpio,也就是说对cpu来说,3个设备在io空间内部这3个设备都是在同一个io空间,也就是说属于共享资源,但是属于该io空间的不同位上。每次操作都是各设各的位,互不影响。 这种情况下,多核cpu是否需要加锁,单核cpu是否需要禁抢占?