原子操作可以在多线程环境中保护变量,但是它适用于多线程环境吗?
答案 0 :(得分:0)
是的,确实如此。它们通常是通过原子内存总线操作实现的,因此对于多核方案来说,它们的工作原理是相同的。
实际上,如果您知道要保护的数据仅由同一内核上的不同线程(任务)访问,则通过其他方式(例如禁用先占和/或中断)来实现保护可能会更便宜。原子操作专门用于不足的情况。例如多核系统。
答案 1 :(得分:0)
多线程本质上意味着有多个任务正在运行(进程)。根据维基百科:
原子性是与中断,信号,并发进程和线程隔离的保证。
这是因为这些操作被视为一种操作,因为它没有被任何中断。因此,多个线程当然可以执行这些操作,但是一次只能执行一个操作,因为处理器一次只能执行一个操作或原子操作。 对于有多个处理器尝试访问同一数据的多核进程,使用相同的逻辑。这是通过互斥来完成的,以确保关键代码块永远不会被多次访问。用软件的术语来说,这意味着它使用锁来确保多个处理器在使用时无法访问它。