본문 바로가기

취업/준비

[IT면접] 그래서 동기화 문제를 어떻게 해결할건데?

이전 글 : 2019/10/24 - [취업/준비] - 프로세스 VS 스레드 (메모리 상의 차이)

 

프로세스 VS 스레드 (메모리 상의 차이)

사실 아래 그림들로도 대부분의 의문은 해결된다. 프로세스 레지스터, 스택, 힙, 전역변수, 코드, 데이터 영역을 갖는다. 스레드 레지스터, 스택 공간은 스레드마다 별도로 갖지만 힙, 전역변수, 코드, 데이터 영..

j-i-y-u.tistory.com

 

면접에서 정말 잘 다루는 문제다. 프로세스와 스레드의 차이 + 동기화 문제 해결 세트로다가.

면접 보다보면 만날 확률 100%

 

학문적으로(?) 이야기하자면 세마포어 Semaphore, 뮤텍스 Mutex 등을 이용해서 해결할 수 있다.

이에 대한 설명은 어딜 가나 많으니 논외로 하고, 잠깐 생각해보자.

아니.. 이렇고 저렇고 할 거 없이 동기화 문제가 안 일어나게 하면 안돼?

 

그렇다.

동기화 문제를 해결하는 가장 좋은 방법은 사실 그런 문제가 일어날 일이 없게 하는 것이다.

그러려면 어떻게 해야할까?

 

답은 간단하다. 불변성 immutable 이용

객체를 Read-Only로 만들거나 수정을 가할 때는 새로운 객체가 생성되게 해서, 객체의 내용이 불변하도록 만들면 되는 것 아닌가?

그러면 어떤 스레드에서는 원래 데이터를 참조하고 있을 거고, 수정을 가한 스레드에선 본인이 만든 데이터를 참조하고 있을 것이다!

이럴 경우 물론 메모리 정리가 잘 되어야 하지만..

일단 동기화 문제는 깔끔히 해결되리라는 것을 예상할 수 있다.