Thread-safe, Atomic/non-Atomic

이원희·2021년 1월 11일
0

✍️ etc

목록 보기
4/4
post-thumbnail

Atomic/non-Atomic

Atomic은 다른 말로 원자성이라고 한다.

원자성(Atomic)이란?

원자성은 깨지지 않는 성격이다.
즉, 중단되지 않는 (연산)이라고 볼 수 있다.

깨지지 않는 성격인건 알겠는데 왜 중단되지 않는거지?

예를 통해 이해해보자.

두 명의 사용자가 프린터에 출력하는 명력을 내린다면 각각의 인쇄는 중단되지 않고 한 번에 실행되어야 한다.
만약 프린터 드라이버가 두 사용자의 자료를 부분적으로 보내게 된다면, 예상하지 못한 결과가 초래될 수 있다.
그러므로 프린터 드라이버는 하나의 프로그램으로부터 둘 이상의 명령이 오더라도 항상 예상된 결과대로 처리해야한다. (원자성)
(= 프린터 접근에 대해 동기화 작업을 한다.)

원자성은 DB를 공부하다보면 많이 만나게 되는데 흔히 비행기 표 주문에 비유한다.

원자성(Atomic)은 DB의 트랜잭션 특징 중 하나이다.
하나의 트랜잭션은 모두 성공하거나 모두 실패해야 한다.
비행기 표 주문은 지불과 예약이 동시에 되거나 모두 되지 않아야 한다.
지불은 성공했으나 좌석 예약에 실패한 경우는 있을 수 없다.


Thread-safe

Thread safe는 멀티 스레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없다는 뜻이다.

즉, 멀티 스레드 환경에서 동작해도 원래 의도한 형태로 동작하는 코드를 Thread-safe하다고 말할 수 있다.

0개의 댓글