1. 聞き流しプログラミング言語学習
  2. Rust 037 SendとSync - 型がス..
Rust 037 SendとSync - 型がスレッド境界を越える条件
2026-05-31 09:33

Rust 037 SendとSync - 型がスレッド境界を越える条件

第37章へようこそ。


今日のテーマは、SendとSyncです。


前章で、スレッドに値を渡すときは所有権ごと渡すことを見ました。

moveが、外側の値の所有権をクロージャへ移し、新しいスレッドへ持ち込む。

ただし、すべての値がスレッド境界を越えてよいわけではありません。

ある値をスレッドに渡すと、データ競合という危険が生じる場合がある。


データ競合は、複数の流れが同じ値に同時に触れ、少なくとも一方が書き換えるときに起こる、結果の定まらない状態のことです。

Rustは、この危険を実行してから気づくのではなく、コンパイルの時点で防ぐ。

そのために、どの型がスレッド境界を越えてよいかを、型のうえで区別する。

この区別を担うのが、SendとSyncという2つのトレイトです。


今日扱うのは、SendとSyncがそれぞれ何を表すのか、これらがどう自動的に決まるのか、

そして、なぜRcがこの境界を越えられないのか、という核心です。

感想

まだ感想はありません。最初の1件を書きましょう!

09:33

コメント

スクロール