zoukankan      html  css  js  c++  java
  • iOS

        //进程:正在运行的一个应用程序, 进程之间独立

        //线程:线程是进程的基本执行单元,一个进程的所有任务都在线程中执行.一个进程要想执行任务,必须得有线程(至少有一个线程)

        //线程的串行:一个线程中的任务的执行时串行的, 如果在一个线程中执行多个任务,那么只能一个个的按顺序执行任务.(也就是在同一时间,一个线程只能执行一个任务A->B->C)

        //多个线程:一个进程中可以开启多条线程,每条线程可以并行(同时)执行不同的任务.

                //比如同时开启3调线程没别下载3个文件 (线程1-A,线程2-B,线程3-C)

                //线程的并行(提高程序执行的效率)

        //原理:同一时间CPU只能处理一条线程,只有一条线程在工作(执行),多线程并发执行,其实是CPU快速的在多条线程之间调度(切换),如果切换比较快,就造成了多线程的并发假象

        //如果线程非常多, CPU会累死,消耗大量CPU资源.每条线程被调度的频次会降低(3~5条)

        //优点:1,适当提高程序的执行效率;2,适当提高资源的利用率

        //缺点:1,开启线程需要占用一定的内存空间(默认情况下,主线程占用1M, 子线程占用512K)如果开启大量线程,会占用大量的内存空间,降低程序的性能;2,线程多的话CPU在调度线程上开销大;3,程序设计更复杂,线程之间的通信,数据共享方面,还有多线程的访问的安全问题

    //主线程:一个程序运行后, 默认开启一条线程称为主线程(UI线程)

        //作用:显示刷新UI界面处理事件(点击事件,滚动等)

        //使用注意:不要讲耗时的操作放到主线程(卡顿)

        

        //NSThread *current = [NSThread currentThread];//获得当前的线程

        

        //iOS中多线程实现方案

        //1:pthread,通用的多线程(C语言),使用UnixLinuxWindows,跨平台可移植,难度大.生命周期需要自己管理(几乎不用)

        //2:NSThread,OC,面向对象,简单易用,可直接操作线程对象,自己管理生命周期(偶尔使用)

        //3:GCD:C语言,推荐使用(替代NSThread),充分利用设备多核,自动管理生命周期(经常使用)

        //4:NSOperation:OC语言,基于GCD,面向对象,比GCD多了一些更简单使用的功能,自动管理生命周期(经常使用)

        

        //1:使用pthread 需要引入头文件 #import <pthread.h>(了解)

    //代码如下:

    void *run(void *data){

        //将耗时操作在这执行

        NSThread *current = [NSThread currentThread];

        NSLog(@"run -- %@", current);

        return NULL;

    }

    - (IBAction)buttonClick:(UIButton *)sender {

        NSThread *current = [NSThread currentThread];

        NSLog(@"buttonClick:%@", current);

        pthread_t threadID; //线程的ID,需要传进去这个属性的地址

        //void *(*)(void *)通过这个来告诉他线程开启的时候执行什么方法

        pthread_create(&threadID, NULL, run, NULL);

    }

  • 相关阅读:
    ajax方式提交表单数据并判断当前注册用户是否存在
    Javaweb实现对mongodb的增删改查(附带源代码)
    Navicat导入sql server数据库
    教师信息管理系统(方式一:数据库为oracle数据库;方式二:存储在文件中)
    八中常用的算法设计
    物体高亮与半透明
    unity发布ios高通AR的问题
    UITabView
    iOS Undefined ..Arm64问题解决
    unityweb Request请求
  • 原文地址:https://www.cnblogs.com/guofuzhang/p/5159989.html
Copyright © 2011-2022 走看看