gpt4 book ai didi

ios - dispatch_queue 名称和线程

转载 作者:行者123 更新时间:2023-11-28 18:22:30 33 4
gpt4 key购买 nike

有一个按钮方法:

-(void) buttonTapped:(id) sender{
dispatch_async(dispatch_queue_create("countQueue", NULL), ^{
sleep(10);
NSLog(@"%d",self.count++);
});
}

self.count 是属性:

@property (nonatomic, assign) int count;

我想知道是否通过单击按钮多次创建了“countQueue”,

  1. countQueue 的处理任务正在运行多少个线程?
  2. 因为 block 需要在10秒内运行,如果我每2秒点击按钮,那么它会创建一个新队列,系统如何处理之前的任务?直接取消?

最佳答案

  • 每次调用 dispatch_queue_create() 都会创建一个新队列,即使已经存在具有相同标签的队列也是如此。该标签仅用作在调试期间识别队列的工具。可以同时存在任意多个具有相同标签的队列。
  • 由于您没有保留对队列的强引用,因此在分派(dispatch)到队列的所有 block 完成后它会自动销毁。
  • 系统如何将线程分配给队列是GCD的一个实现细节。
  • 在您的情况下,使用 dispatch_after() 可能更容易。

编辑:阅读您的评论后,我认为您的问题有更好的解决方案,例如,如果图像下载实际完成,则更新属性。如何执行此操作取决于用于下载的方法。一个例子是完成处理程序sendAsynchronousRequest:queue:completionHandler:NSURLConnection

关于ios - dispatch_queue 名称和线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17504635/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com