热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

在用户态如何使用原子操作?

要求连续几个操作不能被打断。类似于:u16t1,t2;raw_local_irq_save(flg)t1timer[1];t2timer[2];
要求连续几个操作不能被打断。

类似于:
u16 t1, t2;

raw_local_irq_save(flg)

t1 = timer[1];
t2 = timer[2];

raw_local_irq_restore(flg);

//do something

7 个解决方案

#1


可以用互斥锁来实现pthread_mutex_lock()

#2


pthread_mutex_lock 能保证 mutex 互斥,但不能保证CPU时间不被打断啊(当然例中操作很少有机会被打断)

我需要保障CPU只有执行完了这几个操作,才能去执行其它操作(用户态)

#3


那你就把必须做完的锁里加一个控制变量,如果不做完,控制变量就为FALSE,然后下面加一个判断不就成了。

#4


或者用事件或信号,只有执行完某些动作,才发出工作信号,进行下一步动作,很多的方法啊。

#5


引用 2 楼 abc00000001 的回复:
pthread_mutex_lock 能保证 mutex 互斥,但不能保证CPU时间不被打断啊(当然例中操作很少有机会被打断)

 我需要保障CPU只有执行完了这几个操作,才能去执行其它操作(用户态)

你要是想保证不被CPU中断,那就只能是关中断了,可是你的程序能有那么高的权限吗?

#6


引用 5 楼 fetag 的回复:
引用 2 楼 abc00000001 的回复:
pthread_mutex_lock 能保证 mutex 互斥,但不能保证CPU时间不被打断啊(当然例中操作很少有机会被打断)

我需要保障CPU只有执行完了这几个操作,才能去执行其它操作(用户态)

你要是想保证不被CPU中断,那就只能是关中断了,可是你的程序能有那么高的权限吗?


有这个需求,另外它是实时进程,FIFO 调度方式。时间尺度是10us级别的,就这个原子操作而言,要求在少于0.125us(125ns)内保证完成相关操作(CPU@312MHZ)

所以,怎么关中断能保证它的性能不受大的影响?

#7


所以,怎么关中断能保证它的性能不受大的影响?
=================================
当然是在尽可能小的block内关中断了。也就是这样的结构:

// 关中断
原子操作块
// 开中断

但是要尽量的使 原子操作块 的语句少一些,压缩到最低!只把那些必须执行原子操作的语句放在这里,其余不必要的或者不是很紧要的一律放到外面去,这样就能保证开关中断的时间差最小了

推荐阅读
  • 雨林木风 GHOST XP SP3 经典珍藏版 V2017.11
    雨林木风 GHOST XP SP3 经典珍藏版 V2017.11 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 2021年最新电脑显卡性能排行榜
    随着2021年的到来,鲁大师发布了最新的消费级PC硬件性能排行榜。其中备受瞩目的显卡TOP30榜单也已出炉,让我们一同了解当前市场上最强大的显卡及其性能表现。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 本文介绍如何使用 Python 提取和替换 .docx 文件中的图片。.docx 文件本质上是压缩文件,通过解压可以访问其中的图片资源。此外,我们还将探讨使用第三方库 docx 的方法来简化这一过程。 ... [详细]
  • 深度学习理论解析与理解
    梯度方向指示函数值增加的方向,由各轴方向的偏导数综合而成,其模长表示函数值变化的速率。本文详细探讨了导数、偏导数、梯度等概念,并结合Softmax函数、卷积神经网络(CNN)中的卷积计算、权值共享及池化操作进行了深入分析。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 帝国CMS多图上传插件详解及使用指南
    本文介绍了一款用于帝国CMS的多图上传插件,该插件通过Flash技术实现批量图片上传功能,显著提升了多图上传效率。文章详细说明了插件的安装、配置和使用方法。 ... [详细]
  • 本文详细介绍了C语言中的指针,包括其基本概念、应用场景以及使用时的优缺点。同时,通过实例解析了指针在内存管理、数组操作、函数调用等方面的具体应用,并探讨了指针的安全性问题。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • MySQL 高性能实战教程
    本课程深入探讨 MySQL 的架构、性能调优、索引优化、查询优化及高可用性等关键领域。通过实际案例和详细讲解,帮助学员掌握提升 MySQL 数据库性能的方法与技巧。 ... [详细]
  • 本文探讨了一个在Mac Mavericks系统上使用Clang++成功编译但通过R CMD SHLIB构建并在R中加载时遇到‘符号未找到’错误的C++程序问题。文章详细分析了错误原因,并提供了有效的解决方案。 ... [详细]
author-avatar
飞儿gxj_505
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有