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

Rust多线程场景下的生命周期理解及代码疑问

Rust多线程场景下的生命周期理解及代码疑问

我现在在写一个多线程版本的蒙特卡洛函数,需要在多个线程里读取对应的数据结构,目前写的函数雏形是这样的:

fn parallel_monte_carlo<T, R>(
    rngs: &mut [&mut R],
    initial_state: &[T],
    params: &[f64],
) -> f64
where
    T: Display + Debug + Send,
    R: Rng + ?Sized + Send + Sync,
    Standard: Distribution<T> + Send,
{
    let threads: Vec<_> = (0..2)
        .map(|idx| {
            let rng_ptr = &mut *rngs[idx] as *mut R;
            // 后续的线程逻辑还没写完,但这里用了原始指针,心里一直没底

我这里为了在线程里使用可变的RNG实例,用了原始指针做类型转换,但总觉得这种写法不太符合Rust的安全规范,想请教各位大佬:

  • 这种用原始指针处理多线程中可变引用的方式,有没有潜在的线程安全或者生命周期问题?
  • 有没有更地道的Rust写法,能不用原始指针就安全地在多线程里分发这些可变的RNG实例?

备注:内容来源于stack exchange,提问作者Dumbo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 17:33:05