reentrant, thread safe(ty)
C언어,ARM / 2020. 8. 9. 17:54
thread safety(쓰레드 안전)는 여러개의 쓰레드가 동시에 어떤 코드(함수)를 실행해도, 올바른 결과가 나오는것을 보장하는것이다.
어떤 코드가, 내부(로컬)변수나 전역 변수를 가지고 동작을 한다면, 여러개의 쓰레드가 호출할때마다, 상태값이 달라지고,
올바른 동작을 안할 수 도 있다. 이런 코드들은 "thread safe하지 않다"고 말한다.
thread safe한 코드를 작성하는 방법은 해당코드가 내부(로컬) 또는 전역(글로벌) 변수에 상태를 저장하지 않으면 된다.
코드(함수)호출할때, 이런 상태값들도 같이 넣어주고, 이 상태값에 따라 동작하게 만들면 된다.
reentrant도 thread safe와 비슷한 개념이기는 하나,
reentrant는 코드가 자기자신을 여러번 호출하는 재귀적인 호출을 허용한다는 뜻이다.
thread와는 전혀 관련이 없는 개념이나, thread safe한 코드는 대부분 reentrant도 만족한다.
그렇다고 꼭 그런것은 아니다.
reentrant코드의 대표적인 예는 재귀호출하는 정렬함수, 여러개의 디렉토리를 모두 탐색하는 파일탐색 함수등이 있다.
'C언어,ARM' 카테고리의 다른 글
stm32-Invalid ROM Table (0) | 2020.08.15 |
---|---|
stm32 keill컴파일러 (0) | 2020.08.15 |
와치독 타이머, CPU_sleep, Flash write (0) | 2020.07.31 |
vc++ 6.0 shiftF5Fix.dll 등록안되는 문제 (0) | 2020.07.26 |
FIFO버그 (0) | 2020.07.25 |