我需要用ARC破坏Objective-C中的信号量吗?



我正在遵循此帖子的建议:核心音频渲染线和线程信号。

在使用dispatch_semaphore_t的更新答案中,我知道我不需要在阅读此帖子后启用ARC时致电dispatch_release:ARC支持dispatch dispatch队列吗?

但是,在使用semaphore_t时的原始答案中(请参见下面的代码片段),我无法找到是否需要在启用ARC时调用semaphore_destroy来破坏信号量的参考。有人可以帮忙吗?

semaphore_t mSemaphore;
kern_return_t result = semaphore_create(mach_task_self(), &mSemaphore, SYNC_POLICY_FIFO, 0);
// Do stuff with semaphore wait and signal ...
kern_return_t result = semaphore_destroy(mach_task_self(), mSemaphore);

预先感谢您!

是的,您需要手动销毁马赫信号量。ARC不会自动管理MACH信号量。并且,通过类似于调度信号量的类似,如果ARC确实管理了它们,则将不允许使用semaphore_destroy()。如果不是不这样做,那么您可以并且应该使用它。

请注意,Mach Semaphores未计数。没有保留和释放操作,只需创建和销毁即可。强或不安全的不保留参考之间没有区别。有效地,所有参考文献都是不安全的不保留的。没有参考计数,弧无法通过代码传递的信号量对象。

最新更新