static pthread_mutex_t gLock; //global
pthread_mutex_init(&gLock,NULL); //in init
pthread_mutex_lock(&gLock);
for(int i=0;i<[message count];i++)
CFSetAddValue(mSet, [message objectAtIndex:i]);
pthread_mutex_unlock(&gLock);
내 코코아 응용 프로그램이 pthread_mutex_t를 사용하여 응답하지 않습니다.pthread_mutex_t VS @ 동기화 된 블록?
@synchronized(mSet)
{
for(int i=0;i<[message count];i++)
CFSetAddValue(mSet, [message objectAtIndex:i]);
}
내 응용 프로그램이 동기화 된 블록으로 잘 작동합니다.
왜?
.h 파일 \t에서 pthread_mutexattr_t attr; \t pthread_mutex_t mutex; (초기화시) \t \t pthread_mutexattr_settype (& attr, PTHREAD_MUTEX_RECURSIVE); \t \t pthread_mutex_init (뮤텍스, 할당 해제에 &attr); 가 pthread_mutex_destroy (뮤텍스) 내 기능 에 pthread_mutex_lock에 (뮤텍스) \t \t \t \t CFSetRemoveAllValues (요소인지) \t \t \t pthread_mutex_unlock을 (뮤텍스) 은 이게 뭐야? –
@ParagBafna a) 뮤텍스 attr은 '정적'일 수 있으며 생성 한 모든 뮤텍스에 사용할 수 있습니다. 또는 정적이 아니며'-init'에서만 사용됩니다. b) 뮤텍스 attr은 ivar 일 필요는 없습니다. c) 결과 코드 d) 경우에 따라'pthread_mutex_trylock '을 선호 할 수도 있습니다. e) 이니셜 라이저를 사용하여 구조체를 초기화해야합니다. 그 외의, 잘 보인다! 빠른 잠금 = 준비) – justin
결과 코드는 주로 잠금 및 스레드 오류를 감지하는 데 유용합니다. (들은 pthread_mutex_t *) PTHREAD_MUTEX_RECURSIVE_LOCK -. – justin