2016-08-22 6 views
2

라이브러리의 함수가 있고 재진입 가능하지 않다는 것을 알고 있다면 어떻게 스레드 환경 (POSIX)에서 사용하겠습니까? 라이브러리의 소스 코드에 액세스 할 수 없습니다.C에서 재진입과 관련하여

+5

공유 리소스로 모델링하고 뮤텍스 (또는 유사)로 묶어야합니다. –

+0

좀 더 자세하게 설명해주세요. –

+0

명확해야 할 부분은 무엇입니까? "공유 자원", "뮤텍스", 다른 것? –

답변

6

뮤텍스로 감쌀 수 있습니다. 다음은 예제 사용법입니다.

pthread_mutex_t f_func_mutex = PTHREAD_MUTEX_INITIALIZER; 

pthread_mutex_lock(&f_func_mutex); 

f_func(); 

// if f_func has "side effects", such as setting a global, you'll want to grab 
// the value within the locked region: 
int local = global_set_by_f_func; 

pthread_mutex_unlock(&f_func_mutex); 
+0

잡았어, 고마워. –