Это не проблема безопасности потока ... нет способа решить ее с помощью блокировок. Комментарий проясняет это:
Важно : Экземпляры ABAddressBookRef не могут использоваться
несколько потоков. Каждый поток должен
сделать свой собственный экземпляр, позвонив
ABAddressBookCreate.
Что вы можете сделать, это создать отдельный экземпляр ABAddressBook и создать архитектуру производителя / потребителя, которая будет управлять доступом к объекту.
Оболочка будет иметь основной поток, который выполняет только одно: читает запросы операций из очереди блокировки, а затем выполняет операции с адресной книгой. Все ваши потоки будут помещать свои операции в одну очередь, и оболочка выполнит эти действия; если в очереди ничего нет, то оболочка будет блокироваться, пока в ней что-то не окажется.
Это должно решить проблему недопущения использования ABAddressBookRef
из нескольких потоков.