Thread-safety와 unsafety란 무엇인가?
Thread-Safety
멀티 스레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없음을 뜻함.
하나의 함수가 한 스레드로부터 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하여 동시에 함께 실행되더라도 각 스레드에서의 함수의 수행 결과가 올바르게 나오는 것
데이터 손실이나 예기치 않은 결과가 발생 하지 않는것을 의미
Thread-Safe한 코드는 스레드 간의 경쟁 조건(race condition)과 같은 문제를 방지하고, 동시성을 효과적으로 다루는 것
Thread-Unsafety
Thread-Safe의 반대??
공유되는 데이터에 대하여 여러 스레들이 동시에 접근을 시도할 때 데이터의 값을 예상할 수 없거나 의도하지 않는 값으로 변경될 수 있는 상황
경쟁 조건(race condition)이나 데드락(deadlock)과 같은 문제를 발생
이러한 특성이 생기는 이유는 무엇인가?
경쟁 조건 (Race Condition)
여러 스레드가 동시에 공유된 데이터를 수정하려고 할 때 발생하는 문제
어떤 스레드가 값을 변경하는 중간에 다른 스레드가 그 값을 읽어오면 예상치 못한 결과가 발생할 수 있다
데드락 (Deadlock)
두 개 이상의 스레드가 서로가 가지고 있는 자원을 기다리면서 아무것도 진행하지 못하는 상태
이는 자원을 얻기 위한 경합이나 락을 제대로 해제하지 않는 경우에 발생할 수 있다
공유 데이터 접근
여러 스레드가 동시에 하나의 데이터를 수정하려고 할 때 동기화 없이 접근하면 문제가 발생할 수 있다
예를 들어, 어떤 데이터를 동시에 수정하면서 읽을 경우에 값의 일관성이 깨질 수 있다
데이터 의존성
한 스레드의 동작이 다른 스레드의 동작에 종속될 때,
동기화 없이 코드를 실행하면 원하는 순서대로 작업이 수행되지 않을 수 있다
본 후기는 정보통신산업진흥원(NIPA)에서 주관하는 <AI 서비스완성! AI+웹개발 취업캠프 - 프론트엔드&백엔드> 과정 학습/프로젝트/과제 기록으로 작성되었습니다.
'코딩캠프 > AI 웹개발 취업캠프' 카테고리의 다른 글
[AI 웹개발 취업캠프] 23.08.08 과제 (0) | 2023.08.08 |
---|---|
[AI 웹개발 취업캠프] 16Day - 백엔드 OT, 웹서버 (0) | 2023.08.07 |
[AI 웹개발 취업캠프] 23.08.03 과제 (0) | 2023.08.03 |
[AI 웹개발 취업캠프] 13Day - SQL(1) (0) | 2023.08.02 |
[AI 웹개발 취업캠프] 23.08.02 과제 (0) | 2023.08.02 |