美文网首页
iOS 又不阻塞主线程,又能停止代码往下走的方法

iOS 又不阻塞主线程,又能停止代码往下走的方法

作者: 我是谁_你是谁 | 来源:发表于2021-11-17 14:52 被阅读0次

直接上干货!


dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                    _stop = NO;
});
while (_stop) {
          [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate 
      distantFuture]];
          MyLog(@"while循环中...");
}
你需要执行的代码
_stop = YES;

问题产生场景:这个情况是我在 for循环遇到的,for循环一直在运行,我想让他停止,用了各种延迟语句(举例sleep(2);)都会卡着主线程,
我发现卡主线程是因为我涉及到sokcet发送,才知道肯定阻塞了。

然后我就搜又不阻塞主线程,又能停止代码往下走的方法,还真找到一个,而且确实好用

解决方法:就是 nsrunloop 这个方法,刚开始for循环外stop是YES,在异步延迟修改stop的值,然后用while判断如果stop值是true进入runloop暂停代码往下走,2秒之后stop值变成false,跳出while循环继续往下执行,stop 又变成true下次又会停止

贴一下那篇文章的链接:https://www.cnblogs.com/iosblogx/p/5567240.html

感谢!!!做个记录,不常用但是会用到的东西

相关文章

  • iOS 又不阻塞主线程,又能停止代码往下走的方法

    直接上干货! 问题产生场景:这个情况是我在 for循环遇到的,for循环一直在运行,我想让他停止,用了各种延迟语句...

  • 如何停止被BlockingQueue阻塞的线程

    如下阻塞队列+线程的代码,很常见,当服务停止时,如何停止被BlockingQueue阻塞的线程? 方法是当服务停止...

  • iOS 多线程问题

    目录多线程简介iOS多线程NSThread解决线程阻塞问题多个线程并发线程状态扩展--NSObject分类扩展方法...

  • java20(多线程--06 停止线程与守护线程与死锁)

    停止线程: stop方法已过时。那么该如何停止线程呢?只有一种,run方法结束 开启多线程运行,运行代码通常都是循...

  • 黑马--多线程

    1.FutureTask示例代码 FutureTask的get方法是一个阻塞方法,需要等线程代码执行完毕才会接着...

  • KMM Native 协程实战

    runBlocking:阻塞当前线程,里面的执行完了,才能停止阻塞。 如果再iosMian里面写,切换工作线程,再...

  • GCD常用方法

    执行一次代码 延迟执行 主线程睡眠3秒,该方法不推荐,因为会阻塞主线程,影响用户体验 该方法在哪个线程中调用则延迟...

  • 线程状态

    sleep()使线程停止运行一段时间,将处于阻塞状态。如果调用sleep方法之后,没有其他等待执行的线程,这时候当...

  • 2020-08-03如何实现Java线程的 阻塞/唤醒(和暂停/

    如何实现Java线程的 阻塞/唤醒(和暂停/继续 类似 以下为线程 阻塞/唤醒 主要代码 如何使用?

  • LockSupport的用法及原理

    是什么 LockSupport是一个线程阻塞工具类,所有的方法都是静态方法,可以让线程在任意位置阻塞,当然阻塞之后...

网友评论

      本文标题:iOS 又不阻塞主线程,又能停止代码往下走的方法

      本文链接:https://www.haomeiwen.com/subject/kivltrtx.html