본문 바로가기
CS

[CS] Thread Safe란

by 시간많은백수 2023. 9. 30.
반응형

Thread Safe에 대해서 알아보기 전에 Thread란 무엇인지 부터 알아보자..!

💡Thread란?

스레드(Thread)는 컴퓨터 프로세스 내에서 실행되는 가장 작은 실행 단위입니다. 스레드는 프로세스 내에서 독립적으로 실행되며, 각각의 스레드는 고유한 코드 흐름을 가지고 있습니다.모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행합니다. 또한, 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threaded process)라고 합니다.

 

💡Thread Safe란?

"Thread Safe(스레드 안전)"란 다중 스레드 환경에서 여러 스레드가 동시에 하나의 자원 또는 데이터를 접근하더라도 예상대로 동작하는 상태를 의미합니다.보다 엄밀하게는 하나의 함수가 한 스레드로부터 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하여 동시에 함께 실행되더라도 각 스레드에서의 함수의 수행 결과가 올바로 나오는 것으로 정의한다.

 

스레드 안전성을 확보하려면 다음과 같은 방법을 사용합니다.


 

  • 동기화(Synchronization): 공유 자원에 접근할 때 하나의 스레드만 접근할 수 있도록 잠금(lock)을 설정하거나, 스레드 간의 작업을 동기화하여 동시 접근을 막습니다.
  • 원자성(Atomicity): 원자적 연산을 사용하여 여러 단계의 작업을 한 번에 실행하는 방식으로, 스레드 간의 경합을 줄일 수 있습니다.
  • 스레드 로컬 변수(Thread-Local Variables): 각 스레드에게 독립적인 데이터를 제공하여 공유 자원에 대한 접근을 줄입니다.
  • 불변 객체(Immutable Objects): 객체의 상태를 변경할 수 없게 설계하여 다중 스레드에서 안전하게 공유할 수 있습니다.
  • 스레드 안전한 자료 구조(Thread-Safe Data Structures): 자료 구조 자체가 스레드 안전하게 구현되어 있는 컬렉션 클래스를 사용합니다.
반응형