linux – 多个线程定期更新全局变量,而第三个线程等待读取
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 多个线程定期更新全局变量,而第三个线程等待读取,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含868字,纯文字阅读大概需要2分钟。
内容图文
![linux – 多个线程定期更新全局变量,而第三个线程等待读取](/upload/InfoBanner/zyjiaocheng/963/4b4416de1eed462db51e0f3563d68c3b.jpg)
我有两个线程A,B定期更新两个全局传感器读取变量,它们执行相同的例程.第三个线程C一旦更新就会对这些值进行一些计算.我设置了一些条件变量,当A& B都更新了全局变量,C将立即读取.我担心线程C错过了一些传感器读数,因为它使用了while循环的轮询是在新的A,B更新后安排的.我不确定我的担心是否必要,因为我是一名新手.
我的开发环境是一个嵌入式linux板,我正在学习pthread.
有没有比为每个全局变量设置两个条件变量更好的方法.
解决方法:
我会使用一个互斥锁,一个条件变量和一个谓词整数生成计数器(只是初始化为零的常规整数).逻辑的工作原理如下:
要更新值:锁定互斥锁.更新值.增加谓词整数.广播条件变量.释放互斥锁.
要读取当前值:锁定互斥锁.复制谓词整数生成计数器的值.读取值.释放互斥锁.
要检查新值:锁定互斥锁.根据上次读取值时复制的值检查谓词整数.如果它不同,则有一个新值.释放互斥锁.
等待新值:锁定互斥锁.虽然谓词整数仍保持上次读取值时保持的值,但阻止条件变量释放互斥锁.复制新的谓词整数以供下次等待.注意新值.释放互斥锁.
内容总结
以上是互联网集市为您收集整理的linux – 多个线程定期更新全局变量,而第三个线程等待读取全部内容,希望文章能够帮你解决linux – 多个线程定期更新全局变量,而第三个线程等待读取所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。