Rust并发编程:Sync和Send基础
1. Rust线程返回值与问题初现
每个Rust线程都有返回值,我们可以通过 join 方法获取线程的返回值,这会暂停当前线程的执行,直到目标线程成功结束或崩溃。当运行程序时,出现了失败的情况,如下所示:
> rustc -C opt-level=3 data_race00.rs && ./data_race00
thread '<unnamed>' panicked at 'assertion failed: `(left == right)`
left: `31`,
right: `21`', data_race00.rs:90:17
note: Run with `RUST_BACKTRACE=1` for a backtrace.
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value:
Any', libcore/result.rs:916:5
1.1 Ring结构问题分析
Ring在内存中是一个连续的块,旁边有一些控制变量。在读写操作前,系统状态如下:
TJ[F:
DBQBDJUZ:
SES
]
]: /POF ]: /POF ]: /POF ]: /POF ]: /POF ]
]
XSU
写入第一个值后,系统状
超级会员免费看
订阅专栏 解锁全文
61

被折叠的 条评论
为什么被折叠?



