zoukankan      html  css  js  c++  java
  • 多线程NSThread

    一些基础知识

        //线程就是进程中并发执行的一些代码片段
        /*
         网络传输方式
         同步:所有任务放到一个线程中完成,只要当前任务没有完成  那么下一个任务就处于堵塞的状态
         异步:多个任务放到多个线程中完成  即使当前任务没有完成   那么也不会影响到其他任务的执行
         
         //数据传输方式
         串行:一个线程中只有当前任务完成后  下一个任务才开始执行
         并发:多个线程完成不同的任务 互不干扰
         
         一般的时候   都是说主线程同步异步,工作线程串行并发
         */
        /*
         线程种类
         1、主线程   UI MainThread  平时写的所有代码都是在主线程中进行的,主线程是系统自动生成的,不能修改
         2、工作线程  worker Thread 又称为次线程   secondary Thread   防止主线程出现假死状态  同时也能提高数据的请求和加载速率
         
         
         
         */

    -(void)buttonClick:(id)sender
    {
        UIButton * button = (UIButton *)sender;
        if (button.tag == 1) {
            NSNumber * num = [NSNumber numberWithInt:100];
            //创建工作线程
            //<1>
            //只需要创建线程  不需要手动开启线程
            //线程对象只要被创建   就会自动执行任务
            [NSThread detachNewThreadSelector:@selector(threadMain1:) toTarget:self withObject:num];
        }else
        {
            NSNumber * num = [NSNumber numberWithInt:100];
            //创建线程
            //<2>
            NSThread * thread = [[NSThread alloc]initWithTarget:self selector:@selector(threadMain2:) object:num];
            //必须手动开启线程
            [thread start];
        }
    
    }
    -(void)threadMain1:(NSNumber *)num
    {
        NSLog(@"线程1开始");
        for (int i = 0 ; i<[num intValue]; i++) {
            NSLog(@"线程1 i=%d",i);
            //控制线程的执行时间
            [NSThread sleepForTimeInterval:0.1];
        }
        //线程结束  也就是线程退出
        NSLog(@"线程1结束");
    }
    -(void)threadMain2:(NSNumber *)num
    {
        NSLog(@"线程2开始");
        for (int i = 0 ; i<[num intValue]; i++) {
            NSLog(@"i=%d",i);
            [NSThread sleepForTimeInterval:1];
        }
        NSLog(@"线程2结束");
    }
     
  • 相关阅读:
    编译原理笔记 2
    编译原理笔记 1
    初步学习计算机图形学 [闫令琪]
    复杂 Web 前端的设计
    使用 GitHub Actions 部署 .Net 5 程序
    ES 2020 Optional Chain (可选链)
    2020 Web 前端学习记录
    WPF TreeView 支持多选
    linux (CentOS 7)报错:yum 命令报错 “ Cannot find a valid baseurl for repo: base/7/x86_6 ”
    node.js 报错
  • 原文地址:https://www.cnblogs.com/huoxingdeguoguo/p/4678140.html
Copyright © 2011-2022 走看看