Nic*_*k C 1 multithreading nsthread grand-central-dispatch ios objective-c-blocks
如果我像这样存储dispatch_queue_t:
@property(assign, nonatomic) dispatch_queue_t myQueue;
Run Code Online (Sandbox Code Playgroud)
...
_myQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
Run Code Online (Sandbox Code Playgroud)
后来,当我做手术时
dispatch_async(_myQueue, ^{
NSLog(@"Hi!");
});
Run Code Online (Sandbox Code Playgroud)
然后在其他地方
dispatch_async(_myQueue, ^{
NSLog(@"Hello!");
});
Run Code Online (Sandbox Code Playgroud)
这些块是在同一个线程上执行的吗?如果没有,我该如何确保它们?基本上我想保留对线程的引用,并使其仅在该线程上执行某些操作.
线程如何分配给队列是Grand Central Dispatch的实现细节.分派到(串行或并发)队列的两个块不一定在同一线程上执行.唯一的例外是"主队列",它只在主线程上执行.
如果您确实要求代码在同一个线程上执行,则必须使用不同的线程方法,例如NSThread或pthread_create.
| 归档时间: |
|
| 查看次数: |
335 次 |
| 最近记录: |