MST

星途 面试题库

面试题:C语言在多核环境下原子操作的基本实现

在多核环境中,假设要对一个整型变量进行原子加操作,使用C语言及相关原子操作库(如GCC原子操作扩展),请编写代码实现。并简要说明原子操作在此场景下相较于普通变量操作的优势。
48.6万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试

代码实现

#include <stdio.h>
#include <stdatomic.h>

int main() {
    atomic_int num = ATOMIC_VAR_INIT(0);
    // 原子加操作
    atomic_fetch_add(&num, 1);
    printf("原子加后的值: %d\n", atomic_load(&num));
    return 0;
}

原子操作优势

在多核环境下,普通变量操作在多线程并发访问时可能出现竞态条件,导致数据不一致。而原子操作可以保证操作的原子性,即该操作不可被打断,同一时刻只有一个线程能对其进行操作,避免了数据竞争问题,确保了数据的一致性和正确性,提高了程序在多核环境下的可靠性和稳定性。