我正在从Objective-C中的几个不同块向同一个NSMutableDictionary添加对象。这些块都是其他一些进程的回调函数;也就是说,当原始过程结束时,它们将在未来的某个未确定点被调用。
我担心的是NSMutableDictionary可能同时由两个不同的块操作。我知道如果这两个块在不同的线程上运行,那么这是一个合理的问题。我只是想知道块是否总是在不同的线程上运行,这使得每当我使用块时这都是一个问题。
答案 0 :(得分:3)
不,块并不总是在不同的线程上运行。它完全取决于块是什么以及如何安排它执行。您是自己执行它,使用GCD队列将其添加到操作队列中。该块可以在任何线程上运行,包括主线程。您可以控制它是在主线程还是后台线程上运行。