study

thread-safe와 reentrant

Thread-safe는 하나의 함수를 여러 thread가 호출해도 문제가 없다는 것으로 보장하는 것이고, reentrant는 하나의 함수를 여러 thread가 동시에 호출해도 문제가 없다는 거다.

그렇기 때문에 thread-safe 함수를 만드려면 단순하게 locking만 사용해도 되지만 성능을 갉아먹는 가장 쉬운 방법이다.

Thread-safe하지 않으면 reentrant하지 않고, 반대로 Reentrant하면 thread-safe하다. 그렇지만, thread-safe하다고 reentrant한 것은 아니다.

Reentrant 한 코드를 만드는 것이 좋고(더 어렵지만) 기본적으로 다음과 같은 원칙을 이용한다.(출처 : http://stoneshim.tistory.com/42 )

  • 전역변수 사용안함
  • static 변수 사용안함
  • stack 변수만 사용
참고 글