์์
Send + Sync
์ฌ๋ฌ๋ถ์ด ๋ค๋ฃจ๊ฒ ๋ ๋๋ถ๋ถ์ ํ์
์ Send + Sync์
๋๋ค:
i8,f32,bool,char,&str, โฆ(T1, T2),[T; N],&[T],struct { x: T }, โฆString,Option<T>,Vec<T>,Box<T>, โฆArc<T>: ์ฐธ์กฐ ์นด์ดํธ ์กฐ์์ ์ํ ๋ฏน ํ๊ธฐ ๋๋ฌธ์ ์ค๋ ๋ ์์ ํจ.Mutex<T>: ๊ฐ์ ์ ๊ทผํ๊ธฐ ์ํด ๋ฎคํ์ค๋ฅผ ์ ๊ถ์ผ ํ๊ธฐ ๋๋ฌธ์ ์ค๋ ๋ ์์ ํจ.AtomicBool,AtomicU8, โฆ: ๊ฐ์ ์ ๊ทผํ ๋ ํน๋ณํ ์ํ ๋ฏน ๋ช ๋ น์ด๋ค์ ์ฌ์ฉํฉ๋๋ค.
์ ๋ค๋ฆญ ํ์
์ ์ผ๋ฐ์ ์ผ๋ก ํ์
ํ๋ผ๋ฉํฐ๊ฐ Send + Sync์ด๋ฉด Send + Sync ์
๋๋ค.
Send + !Sync
์๋ ํ์ ๋ค์ ๋ค๋ฅธ ์ค๋ ๋๋ก ์ด๋๋ ์ ์์ง๋ง ๋ด๋ถ์ ์ผ๋ก ๊ฐ์ด ๋ณ๊ฒฝ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ค๋ ๋ ์์ ํ์ง ์์ต๋๋ค:
mpsc::Sender<T>mpsc::Receiver<T>Cell<T>RefCell<T>
!Send + Sync
์๋ ํ์ ๋ค์ ์ค๋ ๋ ์์ ํ์ง๋ง ๋ค๋ฅธ ์ค๋ ๋๋ก ์ด๋๋ ์ ์์ต๋๋ค:
MutexGuard<T>: ๋ด๋ถ์ ์ผ๋ก, ์ด์์ฒด์ ๊ฐ ์ ๊ณตํ๋ primitive๋ฅผ ์ฌ์ฉํ๋๋ฐ, ์ด primitive๋ ์์ฑ๋ ์ค๋ ๋์์ ํด์ ๊ฐ ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค. (์ญ์ฃผ: ๊ทธ๋์ ๋ค๋ฅธ ์ค๋ ๋๋ก ์ฎ๊ธธ ์ ์์ต๋๋ค.)
!Send + !Sync
์๋ ํ์ ๋ค์ ์ค๋ ๋ ์์ ํ์ง๋ ์๊ณ ๋ค๋ฅธ ์ค๋ ๋๋ก ์ด๋๋ ์๋ ์์ต๋๋ค:
Rc<T>:Rc<T>๋ ์ํ ๋ฏนํ์ง ์์ ๋ฐฉ์์ผ๋ก ์ฐธ์กฐ ์นด์ดํธ๋ฅผ ์กฐ์ํ๋RcBox<T>๋ฅผ ์ฐธ์กฐํฉ๋๋ค.*const T,*mut T: ๋ฌ์คํธ๋ ํฌ์ธํฐ๊ฐ ์ค๋ ๋ ์์ ํ์ง ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.