CS

    스레드 안전(Thread-Safety)란?

    멀티 스레드 프로그래밍 멀티스레드 프로그래밍은 하나의 프로세스에서 여러 개의 스레드를 만들어 자원의 생성과 관리의 중복을 최소화하는 것이다. 장점 멀티 프로세스에 비해 메모리 자원소모가 줄어든다. Heap 영역을 통해서 스레드 간의 통신이 가능하기 때문에 프로세스 간의 통신이 간단해진다. 스레드의 컨텍스트 스위칭은 프로세스의 컨텍스트 스위칭보다 훨씬 빠르다. 단점 힙 영역에 있는 자원을 사용할 때 동기화를 해야한다. 동기화를 위해서 락을 과도하게 사용하면 성능 저하가 발생할 수도 있다. 하나의 스레드가 비정상적으로 동작하면 다른 스레드도 영향을 받아 종료하게 될 수도 있다. 스레드 안전(Thread-Safety) 스레드 안전(Thread-Satety)란 멀티 스레드 프로그래밍에서 일반적으로 어떤 함수나 ..

    동기-비동기와 블럭-논블록의 차이

    Sync와 Async 일반적인 경우 메소드를 실행시킴과 동시에 반환 값이 기대되는 경우를 동기라하며, 그렇지 않은 경우는 비동기라고 한다. 여기서 동기에서 동시에라는 표현은 값이 변환 되기 전까지 blocking되어 있는 것이며 비동기의 경우 blocking 되지 않고 이벤트 큐에 넣거나 백그라운드 스레드에게 해당 task를 위임해 바로 바로 다음 코드를 실행하는 것을 말한다. 동기/비동기는 두 개 이상의 무엇인가가 시간을 맞춘다/ 안맞춘다로 구분할 수 있다. 동기 방식은 메서드 리턴과 결과를 전달받는 시간이 일치하는 명령 실행 방식이며 한 함수가 끝났다는 시간과 바로 다음 함수가 시작하는 시간이 같다. 비동기 방식은 여러 개의 처리가 함께 실행되는 방식으로 동기 방식에 비해 단위 시간당 많은 작업을 처..

    프로세스와 스레드의 차이

    프로세스와 스레드의 차이 1. 프로그램(Program)이란 ? 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태이며 어떠한 작업을 위해 실행할 수 있는 파일을 뜻한다. 2. 프로세스(Process)란? 프로세스란 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램으로 메모리에 올라가서 실행되고 있는 프로그램의 인스턴스를 말한다. 운영체제로부터 시스템의 자원을 할당받은 작업의 단위이며, 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있는다. 각 프로세스는 별도의 주소 공간에서 실행되고 있으며 각 프로세스끼리는 자원의 공유를 하지 않는다. 또한 하나의 프로세스가 다른 프로세스이 자원에 접근하려면 프로세스간의 통신이 필요하면 메일 슬롯, 파이프, 소켓, 시그널, 공..

    Redis란?

    1. Redis란? Redis는 Memcached와 비슷한 캐시 시스템으로 동일한 긴응르 제공하면서 영속성, 다양한 데이터 구조와 같은 부가적인 기능을 제공한다. Redis는 Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈소스 기반의 비관계형 데이터 베이스 관리 시스템(DBMS)이며 데이터베이스, 캐시, 메시지 브로커로 사용되며 인메모리 데이터 구조를 가진 저장소이다. Redis는 메모리에 저장하고 데이터를 읽어와서 빠른 DB라고 생각하지만, 빠른 성능은 레디스의 특징 중 일부분이다. 다른 인메모리 디비들과 가장 큰 차이점은 레디스의 다양한 자료구조이다. Strings, Bitmaps, Bit field, Hashes, Lists, Sets, Sorted Sets, Geospati..