์์
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
: ๋ฌ์คํธ๋ ํฌ์ธํฐ๊ฐ ์ค๋ ๋ ์์ ํ์ง ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.