[Concurrency] Communicating Sequential Processes
Communicating Sequential Processes(์ดํ CSP)๋ ๋์์ฑ ์์คํ
์ ์ฃผ์ ๋ชจ๋ธ ์ค ํ๋๋ค.
Actor ๋ชจ๋ธ๊ณผ ๋น์ทํ๋ฉด์๋ ์ข ๋ค๋ฅด๋ค.
1978๋ ์ Tony Hoare์ ์ํด ์ ์๋ ์ด๋ก ์ด๋ค. ์ด ์๋ฐ์ด quicksort ๊ฐ์ ํต์ฌ ์๊ณ ๋ฆฌ์ฆ์ด๋ ํต์ฌ ์ด๋ก ๋ค์ ๋ง์ด ๋ง๋ ์๋ฐ์ด๋ค.
์ด ๋งค์ปค๋์ฆ์ ์ ์ฉํ ๋ํ์ ์ธ ๊ตฌํ์ฒด๋ก๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ธ Go๊ฐ ์๋ค. ๊ทธ๋ค์์ผ๋ก ์ ๋ช ํ๊ฑด Clojure์ core.async๋ค.
Erlang์ CSP์ ์ ์๋ฅผ ์์ ํ ์ถฉ์กฑํ์ง ์์์ง๋ง, ์ํฅ์ ์ข ๋ฐ์์ ๋ง๋ค์ด์ก๋ค.
๊ทธ ์ธ์๋ ์ฑ๋์ ์ง์ํ๋ค๊ณ ํ๋ฉด ์ต์ํ ๋์จํ ์๋ฏธ์์์ CSP๋ฅผ ๊ตฌํํ๋ค๊ณ ๋ณผ ์ ์๋ค.
๊ธฐ๋ณธ ์๋ฆฌ
๊ธฐ๋ณธ์ ์ธ ์๋ฆฌ ์์ฒด๋ ๊ทธ๋ฆฌ ๋ณต์กํ ๊ฒ์ด ์๋ค.
ํ๋ก์ธ์ค๋ฅผ ์ฌ๋ฌ๊ฐ ๊น๊ณ ๋ฉํฐํ๋ก์ธ์ค๋ก ๋์์ฑ ์ฒ๋ฆฌ๋ฅผ ํ๋ค๋ณด๋ฉด, ๋น์ฐํ ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ผ์ด ์ฆ์ ๊ฒ์ด๋ค. ๊ณ ์ ์ ์ธ ๋์์ฒ๋ฆฌ ๋ฐฉ๋ฒ๋ก ์์๋ ๊ทธ๋ฅ Mutex ๊ฐ์๊ฑฐ ๊น๊ณ ๋ณต์กํ๊ฒ ์ ์ด๋ฅผ ํ๋ค.
ํ์ง๋ง CSP์์๋
์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด "์ฑ๋"์ด๋ ๋จ์๋ฅผ ํตํด์ ์๋ก ํต์ ๊ธฐ๋ฐ์ ๊ณต์ ๋ฅผ ํ๋๋ก ์ ๋ํ๋ค.
์ด๋ฅผ ํตํด ๋ณต์กํ ๋๊ธฐํ ์ฒ๋ฆฌ๋ ๊ด๋ จ๋ ์๋ง์ ๋ฒ๊ทธ๋ค์ ์ต์ํํ ์ ์๋ค.
๋ฌธ์ ๋ฅผ ๋จ์ํํ๋ ๊ฒ์ด๋ค.
์ด๋ฐ๊ฑด ๋ณธ์ง์ ์ผ๋ก ํธ์์ฑ๊ณผ ์์ ์ฑ์ ์ํ ๊ฒ์ด์ง, ์ฑ๋ฅ์ ์ํ ๋ฐฉ๋ฒ๋ก ์ ์๋๋ค. ์ฌ์ค ๋ฎคํ ์ค ๊ฑธ๊ณ ๋๋ฆฌ๋๊ฒ ๋ ๋น ๋ฅด๋ค.
vs Actor Model
https://blog.naver.com/sssang97/223124061290
๊ฐ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ๋ณ๋๋ก ๋์ฐ๊ณ ์ฑ๋ ๊ฐ์ ํต์ ํํ๋ฅผ ์์ฉํด์ ์๋ก๊ฐ์ ๋ฐ์ดํฐ ๋๊ธฐํ - communicate๋ฅผ ํ๋ค๋ ์ ์์ CSP์ Actor๋ ๊ฝค๋ ๋น์ทํ ๋ถ๋ถ์ด ๋ง๋ค.
ํ์ง๋ง ๊ทผ๋ณธ์ ์ธ ๋ถ๋ถ์์๋ ์ฐจ์ด์ ์ด ๊ฝค ๋ง๋ค.

- CSP๋ Actor์ ๋นํด ๊ฐ๋ณ๋ค.
Actor๋ ํ๋ก์ธ์ค๋ผ๊ณ ํ๊ธฐ์ ์ถ์ํ๋ฅผ ์ํ ์์๊ฐ ๋ง์ ํธ์ด๋ค.
Actor๋ Actor๋ง๋ค ๊ณ ์ ํ ์๋ณ๋ฒํธ๊ฐ ํ ๋น๋๋ค. ๊ทธ์ ๋นํด CSP์ ํ๋ก์ธ์ค๋ ๊ทธ๋ฅ ํ๋ก์ธ์ค์ผ ๋ฟ์ด๋ค.
์ ์ด์ Actor ์ฃผ ๋ชฉ์ ์ค ํ๋๋ ๋ถ์ฐํ๋ก๊ทธ๋จ์ ์ํ ๊ฒ์ด๋ค. ๊ทธ๋์ ๋จ์ OS ํ๋ก์ธ์ค๋ ์ค๋ ๋ ์์ค์ ๊ตญํ๋์ง ์๋๋ค.
๋ฐ๋ฉด CSP๋ ๋จ์ผ ๋จธ์ ์์์ ๋จ์ํ ๋์์ฑ ์ฒ๋ฆฌ๋ฅผ ๋ชฉ์ ์ผ๋ก ํ๋ค.
2. ํต์ ๋ฐฉ์
CSP์์๋ ์ฑ๋์, Actor Model์ ๋ฉ์ผ๋ฐ์ค(mailbox)๋ผ๋ ๊ฒ์ ํตํด ํ๋ก์ธ์ค๊ฐ ํต์ ์ ์ฒ๋ฆฌํ๋๋ฐ, ์ด๋ฆ๋ง ๋ค๋ฅธ๊ฒ ์๋๋ผ ๊ตฌ์กฐ๋ ์ข ๋ค๋ฅด๋ค.
์ฑ๋์ ํญ์ ๋ณด๋ธ ์์๋๋ก ๋ฉ์ธ์ง๊ฐ ๋ฐ๋ก ๋์ฐฉํ๋ค๋ ๊ฒ์ด ๋ณด์ฅ๋๋ค.
๋ฐ๋ฉด ๋ฉ์ผ๋ฐ์ค๋ ๋น๋๊ธฐ์ ์ผ๋ก ๋ฉ์ธ์ง๋ฅผ ์ผ๋จ ์๊ณ ๋ณธ๋ค. ์์๊ฐ ๋ณด์ฅ๋์ง๋ ์๊ณ , consumer๊ฐ ๋ฐ์ ์ค๋น๊ฐ ๋์ง ์์๋๋ผ๋ ์ผ๋จ ์๋ค. ๊ธฐ๋ค๋ฆฌ์ง ์๋๋ค.
์ฐธ์กฐ
https://en.wikipedia.org/wiki/Communicating_sequential_processes
https://dev.to/karanpratapsingh/csp-vs-actor-model-for-concurrency-1cpg