2014-05-12 3 views
0

재진입을 허용하는 Semaphore 또는 SemaphoreSlim의 유사한 구현이 있습니까? 이 기능을 구현하는 가장 좋은 방법은 무엇입니까? Thread.CurrentThread.ManagedThreadIdConcurrentDictionary 또는 [ThreadStatic] 속성을 사용하는 것이 안전합니까?세마포어 재진입

+1

왜 필요한가요? 그것은 나쁜 생각처럼 보입니다. 왜 나중에 다시 입력해야하는지 결정하기 전에 단순히 세마포어를 해제 할 수 없습니까? 다른 방법으로, 세마포어 항목을 중간에 배치하는 대신 분기 코드 주위로 감쌀 수없는 이유는 무엇입니까? –

+0

코드 재사용을 위해 여러 가지 방법으로 구성된 여러 메소드에서 단일 잠긴 리소스를 작성합니다. –

답변

1

SemaphoreSlim의 라이브러리는 확실하지 않지만 일반적으로 "재귀 적"세마포는 재귀 뮤텍스와 같은 방식으로 이해가되지 않습니다. 세마포어는 이 뮤텍스로으로 사용되지만 다른 목적으로도 사용될 수 있습니다. mutex에 '재귀 적'기능을 추가하면 더 강력 해집니다. 세마포어에 '재귀 적'기능을 추가하면 성능이 저하됩니다.