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

    多线程

    进程

    • 进程是指在系统中正在运行的一个应用程序

    • 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内

    • 通过“活动监视器”可以查看Mac系统中所开启的进程

    线程

    • 1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程)
    • 1个线程中任务的执行是串行的(执行完上一个才能执行下一个)
    • 因此,也可以认为线程是进程中的1条执行路径
    •  

    多线程

    • 1个进程中可以开启多条线程,多条线程可以并行(同时)执行不同的任务
    • 线程可以并行, 但是每个线程中的任务还是串行
    •  

    多线程原理

    • 多线程并发(同时)执行,其实是CPU快速地在多条线程之间调度(切换)

    多线程优缺点

    • 优点

      • 能适当提高程序的执行效率
      • 能适当提高资源利用率(CPU、内存利用率)
    • 缺点

      • 创建线程是有开销的,iOS下主要成本包括:内核数据结构(大约1KB)、栈空间(子线程512KB、主线程1MB,也可以使用-setStackSize:设置,但必须是4K的倍数,而且最小是16K),创建线程大约需要90毫秒的创建时间
      • 线程越多,CPU在调度线程上的开销就越大
      • 如果开启大量的线程,会降低程序的性能
      • 程序设计更加复杂:比如线程之间的通信、多线程的数据共享

    主线程

    • 什么是主线程

      • 一个iOS程序运行后,默认会开启1条线程,称为“主线程”或“UI线程”
    • 主线程的主要作用

      • 显示刷新UI界面
      • 处理UI事件(比如点击事件、滚动事件、拖拽事件等)
    • 主线程的使用注意

      • 别将比较耗时的操作放到主线程中
      • 耗时操作会卡住主线程,严重影响UI的流畅度,给用户一种“卡”的坏体验 

    • pthread
      • 类型: C语言中类型的结尾通常 _t/Ref,而且不需要使用 *
        /*
        参数:
        1. 线程代号的地址
        2. 线程的属性
        3. 调用函数的指针
          - void *(*)(void *)
          - 返回值 (函数指针)(参数)
          - void * 和 OC 中的 id 是等价的
        4. 传递给该函数的参数
        返回值:
        如果是0,表示正确
        如果是非0,表示错误码
        */
        NSString *str = @"lnj";
        pthread_t thid;
        int res = pthread_create(&thid, NULL, &demo, (__bridge void *)(str));
        if (res == 0) {
          NSLog(@"OK");
        } else {
          NSLog(@"error %d", res);
        }
    本博文由博主根据资料或其他优秀博文整理而成,转载请注明出处,谢谢!
  • 相关阅读:
    node.js的安装与第一个hello world、node.js的初始化
    微信小程序组件学习中
    jq 滚轮监听事件
    数据库的优化(转)
    jquery zTree的基本用法
    Linux常用命令大全
    软件架构与设计 百度网盘的pdf电子书籍
    项目:IT资源共享资源(登录后端)<2>
    项目:IT资源共享资源(登录前端)<1>
    Node简单服务器开发
  • 原文地址:https://www.cnblogs.com/Apolla/p/4737999.html
Copyright © 2011-2022 走看看