如果我像这样存储 dispatch_queue_t :
@property(assign, nonatomic) dispatch_queue_t myQueue;
...
_myQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
后来,当我做这样的操作时
dispatch_async(_myQueue, ^{
NSLog(@"Hi!");
});
然后在别的地方
dispatch_async(_myQueue, ^{
NSLog(@"Hello!");
});
这些 block 是否在同一个线程上执行?如果不是,我如何确保它们是?基本上我想保留对线程的引用并使其仅在该线程上执行一些操作。
最佳答案
如何将线程分配给队列是 Grand Central Dispatch 的一个实现细节。
分派(dispatch)到(串行或并发)队列的两个 block 不一定在同一个队列上执行
线。唯一的异常(exception)是仅在主线程上执行的“主队列”。
如果您确实要求代码在同一个线程上执行,那么您有
使用不同的线程方法,例如NSThread
或 pthread_create
.
关于ios - 在 dispatch_queue_t 上调用执行是否确保它们在同一个线程上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18562050/