Tag: 互斥

快速替代互斥

我有多个线程之间的共享内存。 我想阻止这些线程同时访问这块内存。 (如生产者 – 消费者问题) 问题 : 一个线程将元素添加到队列中,另一个线程读取这些元素并将其删除。 他们不应该同时访问队列。 解决这个问题的一个办法是使用Mutex。 正如我所发现的,Swift中没有互斥体。 Swift中有没有其他的select?

应用挂在__psynch_mutexwait

我们的应用程序似乎半随机挂在psynch_mutexwait。 这似乎与更新CoreData中存储的一堆数据的后台进程有关 – 但是我完全无法弄清楚是谁locking了造成死锁的原因。 以下是lldb给我的完整堆栈跟踪 – 显然是不完整的,并且线程1的最后一帧是虚假的。 在那之前,我在这个方法中有一个断点,它从来没有被打过。 是否有任何方法来确定什么锁正在等待? (甚至可以得到正确的堆栈跟踪?)当然,涉及的代码很多,这使得随机的NSLog语句成为一个巨大的工作。 (lldb) bt all * thread #1: tid = 0x2503, 0x39da20fc libsystem_kernel.dylib`__psynch_mutexwait + 24, stop reason = signal SIGSTOP frame #0: 0x39da20fc libsystem_kernel.dylib`__psynch_mutexwait + 24 frame #1: 0x39ceb128 libsystem_c.dylib`pthread_mutex_lock + 392 frame #2: 0x00022068 OnDeck`-[AttendanceWorkoutsController buildTable](self=0x00000003, _cmd=0x00000000) + 508 at AttendanceWorkoutsController.m:100 thread #2: tid = 0x2803, […]