2017. 1. 12. 14:44 기타 상식
Concurrency와 Parallelism의 차이에 대하여
최근에 C#으로 Server프로그래밍을 하다가 일반적인 generic 컨테이너외에도 Concurrecny가 붙어있는 컨테이너들이 존재한다는 것을 알게 되었다.
이때는 단순히 동시접근에 대해서 내부적으로 관리해주는 컨테이너라고만 알고있다가
심심해서 단어를 검색해봤는데 Parallelism과 다른 의미를 지닌다는 것을 알게되었다.
다른 블로그에서 정리되어 있는 글들을 보고 내가 이해한 내용은 아래와 같다.
Parallelism과 Concurrency는 각각 평행성, 동시성이라는 의미를 지닌다.
이 둘은 언뜻 비슷한것 아닌가라는 생각이 들수 있지만 엄연히 다른것이다.
우선 대표적인 Parallelism은 멀티스레딩이라고 생각한다.
이는 멀티스레딩이 여러개의 스레드가 '평행적'으로 실행되기 때문이다.
반대로 대표적인 Concurrenct는 유니티의 코루틴이라고 생각한다.
Concurrenct가 의미하는 동시성이라는 의미는 같은 스레드 내에서 '동시'에 실행되는 것이라고 생각한다.
유니티의 경우 우선 싱글스레드 기반으로 작동하며 하나의 스레드 내에서 코루틴을 활용하여 일종의 서브루틴을 만듦으로써 마치 일종의 '비동기'함수처럼 활용할 수 있기 때문이다.
Concurrency의 장점은 유니티의 코루틴이 충분히 보여주고 있다고 생각한다.
기존의 Parallelism의 경우 멀티스레드를 통해서 많은 작업을 빠르게 처맇라 수 있지만
Lock, 버그등을 생각해본다면 Concurrency한 로직으로 구현하는 것도 충분히 좋은것 같다
'기타 상식' 카테고리의 다른 글
FirebaseMessage 란? (0) | 2019.07.31 |
---|---|
멀티 스레드에 관해서 (0) | 2019.07.14 |
ORM이란? (0) | 2019.06.23 |
LockFree란? (0) | 2017.03.03 |
메모리 거짓 공유란? (0) | 2017.01.13 |