zoukankan      html  css  js  c++  java
  • NSThread 停止线程

    如果在线程还未完成的时候,我们需要将该线程停掉,即使我们在外面使用cancel方法,但该线程依旧运行。

    那该如何停止一个还在运行中(或着是休眠中的线程呢)

    //如果是第一次运行,则直接建一个新的线程启动,如果不是第一次,则先cancel掉前一个线程,然后再建一个新的线程,不然所有线程都会再后台运行着

        if (!animateThread)

        {

            animateThread = [[NSThread alloc] initWithTarget:self selector:@selector(_startAnimations:) object:images];

            [animateThreadstart];

        }

        else

        {

            [animateThreadcancel];

            [animateThreadrelease];

            animateThread = [[NSThread alloc] initWithTarget:self selector:@selector(_startAnimations:) object:images];

            [animateThreadstart];

            

        }

    然后在_startAnimations函数里:

     

      //监测当前线程是否被取消过,如果被取消了,则该线程退出。

            if ([[NSThreadcurrentThread] isCancelled])

            {

                [NSThread exit];

            }

    这样线程就会停止掉了。cancel只是一个标记位,真正的退出线程需要我们根据这个标记位判断 然后使用exit退出。




  • 相关阅读:
    jupyterlab数据处理
    系统监测模块
    登录验证码的实现
    编码格式检测chardet模块
    图像处理pillow模块
    内存数据的读取
    力扣(LeetCode)728. 自除数
    力扣(LeetCode)709. 转换成小写字母
    Java 层序创建和遍历二叉树
    力扣(LeetCode) 849. 到最近的人的最大距离
  • 原文地址:https://www.cnblogs.com/bbsno1/p/3262867.html
Copyright © 2011-2022 走看看