멀티스레딩

    프로세스와 스레드에 대하여

    1. 프로세스(Process) 1) 프로세스란? 프로세스는 운영체제로부터 자원을 할당받아 실행중인 프로그램을 의미한다. 디스크에 저장된 프로그램을 실행하면 메모리가 할당되고 바이너리 코드가 메모리에 올라가게 된다. 이때, 메모리에 올라간(로드된) 프로그램의 인스턴스를 프로세스라고 부른다. 프로세스는 운영체제의 스케줄러가 관리하는 작업(task)의 단위로 사용되기도 한다. 스케줄러(Scheduler) 스케줄링 알고리즘에 따라 자원을 사용할 프로세스를 결정하는 운영체제의 모듈 2) 메모리 구조 프로세스가 할당받은 메모리는 4가지 영역으로 구성된다. Code 프로그램의 코드와 명령어가 기계어 형태로 저장되는 영역이다. CPU는 이 영역에 저장된 명령어를 순차적으로 가져와서 처리한다. 컴파일 시점에 메모리 크기..

    [Swift] Singleton과 Thread-Safe

    여러 개의 뷰 컨트롤러가 유저의 아이디와 닉네임을 사용해야하는 상황이 있었다. 각 뷰 컨트롤러 클래스에 유저의 아이디와 닉네임을 저장하는 프로퍼티를 정의하여 초기화 시 그 값들을 넘겨주는 방식이었는데, 그렇게 하지않고 유저 정보를 저장하는 공유 객체를 만들어서 필요할때마다 참조하면 편할 것 같다는 생각이 들어 싱글톤 디자인 패턴을 적용하려고 했다. 로그인이 완료된 시점에 싱글톤 객체를 생성하고 로그아웃 시 객체 메모리를 해제하는 방법을 찾다가 우연히 Thread-Safe에 대해 공부하게 된 것을 정리한다. 보통 Swift에서 싱글톤 패턴 구현 방법을 찾으면 아래의 방법이 사용된다. class Singleton { static let shared = Singleton() private init(){} } ..