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

server/2024/10/20 19:58:18/

在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;
}


http://www.ppmy.cn/server/133436.html

相关文章

uniapp中使用lottie实现JSON动画

uniapp中使用lottie实现JSON动画 不喜欢废话直接开干一、引入相关依赖二、在项目的目录新建目录结构三、操作步骤四、编写自定义组件代码五、组件的使用提一嘴更多lottie-web常用方法添加点击事件 不喜欢废话直接开干 一、引入相关依赖 npm install lottie-web # 如果有问题可…

python装饰器property的使用

使用 Python 的 property 装饰器管理类属性 在 Python 中&#xff0c;property 装饰器是一个非常有用的工具&#xff0c;它允许我们将一个方法转换为属性调用。这样&#xff0c;我们就可以像访问对象的属性一样来调用该方法&#xff0c;而不需要使用括号。这通常用于封装数据&…

Spring Security 基础配置详解(附Demo)

目录 前言1. 基本知识2. Demo3. 实战 前言 基本的Java知识推荐阅读&#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09;【Java项目】实战CRUD的功能整理&#xff08;持续更新&#xff09; 1. 基本知识 HttpSecurity 是 Spri…

Linux下的C语言和系统的缓冲区

首先来看看这两个代码 1. #include<stdio.h> #include<stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include<unistd.h> #include<string.h>void test() {size_t fdopen("log.txt",O_WR…

低代码框架参考

企业管理信息系统作为一类重要的应用软件系统&#xff0c;具有自己的特点&#xff0c;主要有两个方面&#xff1a; 1. 系统规模大&#xff0c;目前市场上常见的ERP系统一般都有几千个页面。 2. 页面逻辑相似性强。经过比较可以发现&#xff0c;大部分页面具有类似的功能&…

项目模块化下的maven管理工具的使用

开门见山--情境导入 见如下项目的架构&#xff0c;如图&#xff0c;我们可以看到在当前的项目目录中&#xff0c;有两个项目&#xff0c;一个是模块是实现逻辑类的功能 xf-common, 另外一个模块是现实业务逻辑功能 xf-file-manager 但是在这里我们主要用这个模块来测试模拟真…

机器学习【金融风险与风口评估及其应用】

机器学习【金融风险与风口评估及其应用】 一、机器学习在金融风险评估中的应用1.提升评估准确性2.实现自动化和智能化3.增强风险管理能力4.信用评估5.风险模型6.交易策略7.欺诈检测 二、机器学习在金融风口评估中的应用1.识别市场趋势2.评估创新潜力3.优化投资策略4. 自然语言处…

使用Python实现深度学习模型:智能生产线优化

在现代工业中,智能化和自动化生产线已成为提升生产效率和降低成本的关键手段。通过使用深度学习模型,可以实现对生产线的智能优化,从而进一步提高生产线的自动化水平和生产效率。本文将介绍如何使用Python实现深度学习模型,用于智能生产线优化。 一、深度学习在智能生产线…