当前位置: 首页 > news >正文

专门做狗猫配套网站有什么意思二次开发源代码

专门做狗猫配套网站有什么意思,二次开发源代码,杭州网站做的好公司,网页版梦幻西游好玩吗自旋锁作用 自旋锁的是为了保护两个核上的公共资源#xff0c;也就是全局变量#xff0c;只有在一方也就是一个核抢到了自选锁#xff0c;才能对公共资源进行操作修改#xff0c;当然还有其他形似的锁如互斥锁#xff0c;这里不比较两者的区别#xff0c;以前没有深入的去…自旋锁作用 自旋锁的是为了保护两个核上的公共资源也就是全局变量只有在一方也就是一个核抢到了自选锁才能对公共资源进行操作修改当然还有其他形似的锁如互斥锁这里不比较两者的区别以前没有深入的去了解自旋锁的底层实现只是简单调用。 自旋锁原理 自旋锁的底层实现原理其实是用到了各个架构比较交换的汇编指令英飞凌的TriCore架构为 CMPSWAP.WARM架构虽然没有比较交换指令但是通过关闭preempt_disable禁止抢占来实现原子操作。 数据总线 数据总线的一些基本概念这里就不提出来再讲了。有一个细节是在总线上同一时刻只能有一个主设备控制总线传输操作。而对于多核来说也是如此他们需要互相争抢总线的使用权而这一现象又能帮助我们实现一些原子操作。 总线操作 使用总线对数据进行操作的时候并不是全部都能一次完成的有时候可能需要多个操作才能实现我们编程中看似简单的操作而在找个时候就不一定能满足我们的原子性了。 TriCore架构自旋锁实现 boolean IfxCpu_acquireMutex(IfxCpu_mutexLock *lock) {boolean retVal;volatile uint32 spinLockVal;retVal FALSE;spinLockVal 1UL;spinLockVal (uint32)__cmpAndSwap(((unsigned int *)lock), spinLockVal, 0);/* Check if the SpinLock WAS set before the attempt to acquire spinlock */if (spinLockVal 0){retVal TRUE;}return retVal; }/** \brief This function is a implementation of a binary semaphore using compare and swap instruction* \param address address of resource.* \param value This variable is updated with status of address* \param condition if the value of address matches with the value of condition, then swap of value address occurs.**/ IFX_INLINE unsigned int Ifx__cmpAndSwap (unsigned int volatile *address,unsigned int value, unsigned int condition) {unsigned long long reg64 value | (unsigned long long) condition 32;__asm__ __volatile__ (cmpswap.w [%[addr]]0, %A[reg]: [reg] d (reg64): [addr] a (address): memory);return reg64; }这段代码的逻辑及其简单就是去查找我们lock变量的值是否为0如果为0便把它赋值为1并且返回成功抢到锁的信息。而有一个操作是值得关注的。__cmpAndSwap() 这一操作为什么能保证原子性并且能做到对变量进行加锁的呢这里使用了汇编语言对芯片进行操作而cmpswap.w操作正是我们在数据手册中找到的新指令。而正如注释说这一个指令能比较两个地址中的值是否相同并完成交换。 cmpswap.w等效如下代码 tmp *x; //#tmp address的值 if(*x z) // # z为condition {*x y; //#*address values; } else {*x tmp; } return tmp PowerPC架构自旋锁实现  static inline uint32 aSpinlock_Hal_Swap(uint32 Addr, register uint32 Value) {uint32 result;register uint32 temp1,temp2;__asm__ __volatile__(/* prepare the decoration for the SWAP instruction */mr %[temp11], %[Value] \n /* load value in r6 */e_lis %[temp22], 0x5000 \n /* r5 0x50000000 */se_or %[temp11], %[temp22] \n /* Value Value | r5 *//* lwdcbx - Load Word Decorated with Cache Bypass */lwdcbx %[result], %[temp11], %[Addr] \n /* SWAP Addr with r3 */: [result] r (result): [Addr] b (Addr), [temp11]r (temp1), [temp22]r (temp2) , [Value]r (Value): cc);return result; } 参考文档 Aurix/Tricore实验分享之103: 硬件mutex指令|英飞凌开发者技术社区 TriCore架构多核多线程锁探究(TC264双核互斥锁)-CSDN博客 https://www.cnblogs.com/DoOrDie/p/9265754.html
http://www.hkea.cn/news/14323191/

相关文章:

  • 绍兴大明电力建设有限公司网站国外设计灵感网站
  • 用excel做网站网络营销编辑干什么的
  • 怎么用服务器搭建网站成都规划网站
  • 厦门市建设工程安全管理协会网站做网站公司哪家
  • 郑州七七网站建设西安网站建设运维
  • 温州联科网站建设wordpress建站解析
  • 公司的网站建设费用属于什么费网站建设怎么问问题
  • 汽车电子商务网站建设规划书二级域名和一级域名优化难度
  • 苏州网站开发公司招聘信息ui是什么工作
  • 全是广告的网站单页面推广网站模版
  • 张家界住房和城乡建设局网站网站未备案wordpress
  • 国家机构网站建设工商局网站做年报
  • 长春网站制作一般需要多少钱做网站很挣多少钱
  • 哪里有免费的网站模板下载那些网站使用vue做的
  • 东莞网站平台后缀长沙百度
  • 德阳网站设计他达拉非功效与作用主要会有哪些
  • 建站之星多语言个人网站用什么建站程序
  • wordpress百度云网盘seo课程培训班
  • 企业网站策划方案模板在线编辑网页
  • 网站免费建站广告机公司网站域名 优帮云
  • 东海建设局网站上海建设工程造价信息网
  • flash 网站设计买了winhost网站空间在哪里登陆
  • 网站seoapp贵州省建设厅审图网站
  • 网站建设办公纺织品公司网站建设
  • 专业网站建设机构网站的免费空间是什么
  • 网站开发项目税率品牌网站制作公司
  • 给网站做网络安全的报价东莞食品网站建设
  • 深圳网站维护服务的公司广东广州安全教育平台
  • 专门做恐怖电影网站广告设计公司制作
  • 怎样建设门户网站手机wap网页