LHH Blog
취소

(C#) 경합 조건과 원자성 (Interlocked)

원자성이란? 여러 스레드가 존재할 때 특정 시점에서 어떠한 메소드를 두개 이상의 스레드가 동시에 호출하지 못한다. 멀티 스레드를 사용할 때 중요한 것 중에 하나가 바로 원장성이다. Interlocked는 이러한 원자성을 보장해주는 역할을 한다. 예를 들어 손님 1명과 직원 3명이 존재한다. 손님이 주문을 하여 콜라를 받아야할 상황일 때 직원 3...

(C#) Memory Barrier

Memory Barrier란? 컴파일을 진행하게 되면 우리 모르게 하드웨어에서도 최적화를 진행하게 된다. 그로 인해 코드 재배치가 일어나게 되고 이런 최적화 때문에 우리가 의도하지 않는 방향으로 코드가 흘러가게 된다. 우리의 의도대로 코드가 진행할 수 있도록 사용되는 것이 바로 메모리 베리어(Memory Barrier)이다. Store, Loa...

Debug와 Release의 차이

Debug란? Debug는 시스템의 논리적인 오류나 비정상적인 연산을 찾아 원인을 밝히고 수정할 수 있다. 우리가 흔히 컴파일을 진행할 때 방식을 변경할 수 있는데 기본적으로 설정되어 있는게 Debug다. Release란? Release는 스스로 코드를 최적화 후 컴파일을 진행한다. 개발단계가 아닌 배포할 시기에 적용하는 것이 좋다. Debug...

(C#) 스레드

프로세스 프로세스는 프로그램안에서 작업을 처리해주는 역할을 한다. 스레드 스레드는 프로세스 안에서 일을 처리해주는 일꾼으로 스레드 혼자서 처리한다면 싱글 스레드, 둘 이상의 스레드를 사용한다면 멀티스레드라고 부른다. 스레드의 장/단점 [장점] 여러 작업을 동시에 진행할 수 있어 자원을 보다 효율적으로 사용할 수 있다. 응답성이 좋다. ...