- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于嵌入式系统项目,我必须处理同时发送大量数据的传感器。目前,每个传感器都有自己的线程,许多线程相互引用。
使用互斥锁,这些线程相互获取数据。然而,在生产过程中,一些线程会无限期地等待另一个线程来完成对锁定数据的处理。我知道这个问题与死锁有关,但我发现这些问题很难发现和预防。
我想避免如此广泛地使用互斥锁,因为它们会导致我的大部分问题难以重现。我已经尝试了很多事情,例如当互斥锁超出范围时自动解锁,但到目前为止没有任何效果。我有一个包含以下方法的 SharedData 类:
```
template<class T>
T SharedData<T>::Get() {
LockGuard lock(mutex_);
T data = data_;
if (!IsValid() && has_default_value_) {
data = default_value_;
}
return data;
}
template<class T>
void SharedData<T>::Set(T data) {
is_set_ = true;
set_time_ = system_clock::now();
LockGuard lock(mutex_);
data_ = data;
}
```
我的问题如下;在线程之间共享实时数据的安全好方法是什么(最好不使用互斥锁)?
我正在寻找线程间消息传递方向的解决方案。我还没有找到一种优雅的方式来做到这一点。
提前致谢!
编辑:为了阐明“线程相互获取数据”,这里是一个代码片段:
void MotorMessage::SetConnectedModules(MotorSensor &motor_sensor) {
out_buffer_[index_++] = motor_sensor.connected_.Get();
}
这里的 motor_sensor 是对不同线程的引用,而 connected_ 是 SharedData 类型。
最佳答案
您可以设置一个或多个从传感器线程到消费者的原子队列。这样您就不必自己进行任何锁定。
例如,来自 Intel TBB 的队列.
关于c++ - 线程之间的实时数据共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52704628/
我的要求是单帧数据要用两种方法并行处理(需要并行,因为它们是计算量大的)。 根据其中一个线程的结果,另一个需要停止。也就是说,如果方法 1 先返回 TRUE,则应该停止方法 2。如果方法 1 先返回
我是 iOS 新手。我需要创建一个允许注册用户在他们之间共享特定数据的小应用程序,我正在寻找最佳解决方案。我知道我可以创建一个服务器来处理用户身份验证、推送通知和在它们之间共享数据,但也许有更简单更好
我在尝试在 Apple Watch 和 iPhone(均在模拟器上)之间共享数据时遇到问题。 这就是我在 iPhone 应用程序上存储数据的方式: NSUserDefaults* defaul
我想就数据共享的设计实现征求您的意见。 我正在研究 Linux 嵌入式设备(mips 200 Mhz),我希望在多个进程之间进行某种数据共享,这些进程可以一次读取或写入多个参数。 该数据包含约 200
我有三个测试用例,即 Test1.java、Test2.java、Test3.java。在每个测试用例中,我都与一个要读取数据的文件进行交互。这意味着我正在读取每个测试用例的 @BeforeClass
我希望我的 IE 扩展的 BHO 实例能够共享公共(public)数据。我只需要他们共享几个变量,所以我试图找到一个简单的问题解决方案。 我能想到的备选方案,从简单到复杂是: 1) 向/从文件系统或注
经常需要在不同的对象/类之间共享相同的数据。我知道有几种不同的方法可以做到这一点: 全局变量:大多数人出于正确的原因厌恶它。 单例:这对谁可以或不可以提供有限的控制修改数据,至少针对下面讨论的问题。
我正在使用带有 android kitkat 4.4.4 版本的 Moto e。在谷歌上进行一些搜索后,我发现网络共享被禁用以支持移动运营商的数据计划。 I am able to use mobile
我是一名优秀的程序员,十分优秀!