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);
Ứng dụng ca cao của tôi đang ở chế độ không phản hồi với pthread_mutex_t.pthread_mutex_t VS @synchronized block?
@synchronized(mSet)
{
for(int i=0;i<[message count];i++)
CFSetAddValue(mSet, [message objectAtIndex:i]);
}
Ứng dụng của tôi đang hoạt động tốt với khối được đồng bộ hóa.
Tại sao?
Trong tệp .h \t pthread_mutexattr_t attr; \t pthread_mutex_t mutex; trong init \t \t pthread_mutexattr_settype (& attr, PTHREAD_MUTEX_RECURSIVE); \t \t pthread_mutex_init (& mutex, &attr); trong dealloc pthread_mutex_destroy (& mutex); chức năng pthread_mutex_lock của tôi (& mutex); \t \t \t \t CFSetRemoveAllValues (mySet); \t \t \t pthread_mutex_unlock (& mutex); là Khoản tiền này? –
@ParagBafna a) attex mutex có thể là 'static' và được sử dụng cho mọi mutex bạn tạo - hoặc không tĩnh và chỉ được sử dụng trong' -init' b) mutex attr không cần phải là ivar c) bạn nên xác minh mã kết quả d) bạn cũng có thể thích 'pthread_mutex_trylock' trong một số trường hợp. e) bạn nên khởi tạo các cấu trúc bằng cách sử dụng initializers. Khác hơn thế, có vẻ tốt! chuẩn bị cho khóa nhanh =) – justin
mã kết quả hữu ích chủ yếu để phát hiện lỗi khóa và luồng. – justin