はじめに
この実験では、スレッド間で共有所有権が必要な場合に使用されるRustのArc
(原子的参照カウント)の使用方法を探ります。
注: 実験でファイル名が指定されていない場合は、好きなファイル名を使用できます。たとえば、
main.rs
を使用して、rustc main.rs &&./main
でコンパイルして実行できます。
This tutorial is from open-source community. Access the source code
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、スレッド間で共有所有権が必要な場合に使用されるRustのArc
(原子的参照カウント)の使用方法を探ります。
注: 実験でファイル名が指定されていない場合は、好きなファイル名を使用できます。たとえば、
main.rs
を使用して、rustc main.rs &&./main
でコンパイルして実行できます。
スレッド間で共有所有権が必要な場合、Arc
(原子的参照カウント)を使用できます。この構造体は、Clone
実装を通じて、メモリヒープ内の値の場所に対する参照ポインタを作成しながら参照カウンタを増やします。スレッド間で所有権を共有するため、値への最後の参照ポインタがスコープ外になると、変数が破棄されます。
use std::time::Duration;
use std::sync::Arc;
use std::thread;
fn main() {
// この変数宣言では、その値が指定されています。
let apple = Arc::new("the same apple");
for _ in 0..10 {
// ここでは値の指定がないため、メモリヒープ内の参照へのポインタです。
let apple = Arc::clone(&apple);
thread::spawn(move || {
// Arcを使用したため、Arc変数ポインタの場所に割り当てられた値を使用してスレッドを生成できます。
println!("{:?}", apple);
});
}
// すべてのArcインスタンスが生成されたスレッドから出力されることを確認します。
thread::sleep(Duration::from_secs(1));
}
おめでとうございます!あなたはArcの実験を完了しました。あなたの技術を向上させるために、LabExでさらに多くの実験を行って練習してください。