linux 多线程共用一个变量不使用互斥锁实现线程间同步

在Linux中,如果你想要在多个线程之间共享一个变量,并且你想要确保一个线程写入而另一个线程读取时能够及时同步,你可以使用原子操作。

对于写入线程,你可以使用 atomic_store 来存储变量,对于读取线程,你可以使用 atomic_load 来加载变量。这些操作都是原子的,意味着它们在执行过程中不会被其他线程中断。

以下是一个简单的例子,展示了如何在两个线程之间使用原子变量进行同步:

#include <stdatomic.h>
#include <stdio.h>
#include <pthread.h>
 
atomic_int shared_var;
 
void* write_thread(void* arg) {
    for (int i = 0; i < 10; ++i) {
        atomic_store(&shared_var, i); // 原子存储操作
    }
    return NULL;
}
 
void* read_thread(void* arg) {
    while (atomic_load(&shared_var) < 10) { // 原子加载操作
        printf("shared_var: %d\n", atomic_load(&shared_var));
    }
    return NULL;
}
 
int main() {
    pthread_t writer, reader;
    pthread_create(&writer, NULL, &write_thread, NULL);
    pthread_create(&reader, NULL, &read_thread, NULL);
    pthread_join(writer, NULL);
    pthread_join(reader, NULL);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值