You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无锁实现生产者与消费者线程间市场数据(双精度结构体)安全共享的方案咨询

无锁实现生产者与消费者线程间市场数据(双精度结构体)安全共享的方案咨询

各位好,我目前碰到了一个多线程场景下的共享数据安全问题,想请教下无锁实现的解决方案:

我有一个多线程应用,其中一个生产者线程负责更新多只交易标的的市场数据,同时有多个消费者线程会读取这些数据,根据不同策略计算现货价格,比如:

  • spot = (bid + ask) / 2
  • spot = bid * bid_qty / ask * ask_qty

我定义的Instrument结构体代码目前是这样的(代码片段有截断,先贴出已有的部分):

#include <iostream>
#include <thread>
#include <unordered_map>
#include <string>
// 后续头文件及结构体完整定义被截断,大致会包含bid、ask、bid_qty、ask_qty这类双精度字段
struct Instrument {
    double bid;
    double ask;
    double bid_qty;
    double ask_qty;
    // 其他可能的市场数据相关字段
};

现在想请教的是,怎么用无锁的方式实现:当生产者更新Instrument数据时,多个消费者能安全读取到一致的、未被半更新的完整数据?毕竟如果直接裸共享内存,大概率会出现消费者读到"脏数据"的情况——比如生产者刚更新了bid字段,还没来得及更新ask,消费者就读取了数据,最后算出错误的现货价格。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 13:38:06