OC多线程分享pthread&NSThread

一.多线程基础{

1. 耗时操作:I/O操作:讲数据从内存输入或者输出到外部设备
2. 多线程优,缺点:
优点:{1.能'适当'提高程序的执行效率
      2.能'适当'提高CPU和内存的利用率
      3.线程上的任务完成后,线程会自动销毁,节省内存}
缺点:{1.开启线程需要占用一定的内存空间,如果开启过多线程,就会大量占用CPU资源,降低程序性能
    2.内存占用:子线程512KB,主线程ISO8前1M,后512KB
    3.线程开启越多,CPU调度相差的开销就越大{时间开销/空间开销}
    4.程序设计更加复杂:比如线程间的通信,线程间的数据共享;}

二.pthread{

1.基于C语言的;
2.跨平台可移植;
3.线程生命周期程序员控制;
4.引入头文件:#import <pthread.h>
5.创建方法:pthread_create{
    a.参数1:直线线程标识符的指针:'定义'pthread_t pthread = '使用'&pthread
    b.参数2:线程属性;
    c.参数3:指向新线程的指针(一个方法,或者说需要新线程去执行的地方);
    d.参数4:线程参数;
    e.返回值:BOOL,0表示创建线程成功,反之失败(成功只有一种,失败情况很多种)}
6.桥接:__bridge将OC语言的属性转化为C语言的属性,告诉编译器,这是个C语言属性,不需要内存管理,你啥都不做就行了;}

三.NSThread{

1.基于OC语言,面向对象;
2.可直接操作线程对象;
3.程序呀管理线程生命周期;
4.三种创建方法{
    a.对象创建方法:"可以获得对象,对对象进行操作,需手动启动"
        NSThread *thread = [[NSThread alloc] initWithTarget:self @selector(demo:) object:@"参数"];
        '需手动启动':[thread start];
    b.类的创建方法:"无法获取线程对象,自动开启线程"'detach分离'
        [NSThread detachNewThreadSelector:@selector(demo:) toTarget:self withObject:@"参数"];
    c.NSObject的分类创建:"无法获取对象,任何NSObject对象都可以创建,自动开启线程"
    [self perfromSelectorInBackground:@selector(demo:) withObject:@"参数"];}
5.线程的生命周期:{
    a.新建:创建线程对象:[[NSThread alloc] initWithTarget];
    b.就绪:将线程放入'可调动释放池',等待CPU调用:[NSThread start];
    c.运行:CPU调度'可调动释放池'中'就绪状态'的线程,线程结束之前,状态会在就绪和运行间来回切换(CPU调度特点,CPU完成,程序员无法干涉);
    d.阻塞:{
        1.休眠指定时间:[NSThread sleepForTimeInterval:1.0];
        2.休眠到指定日期:[NSThread sleepUntilDate:[NSDate dateWith]];
        3.互斥锁:@synchronized'只能有一个线程访问这个属性,其他线程会阻塞等待访问结束'}
    e.死亡:正常死亡:线程执行结束 非正常死亡:程序崩溃/满足某个条件后,线程内部强制退出,调用"exit"("主线程中严禁调用exit")
    f.重要注意:{
        1."主线程中严禁调用exit"
        2."[NSThread exit]方法会停止当前线程"
        3."在调用[NSThread exit]方法前,一定要释放之前C语言框架创建的对象"
        "CGMutablePathRef path = CGPathCreateMutable()"
        "CGPathRelease(path);"}}
6.线程属性:{
    1.name:线程名称,用来定义BUG位置
    2.threadPriority:线程优先级,浮点数0~1,1最高,默认0.5,只CPU决定调用频率,最好不要修改;
    3stackSize:栈区大小:默认512KB,最新哦啊16KB,必须是4KB的整数打印时候/1024;}
7.线程安全:{
    1.互斥锁/同步锁:{'单写&单读'
        a.可以保证被锁定的代码,同一时间,只能有一个线程可以操作;
        b.任何NSObject的对象,都是可以所对象,你饿不都有一把锁,big切默认是开着的;
        c.锁对象:一定要全局锁对象,保证所有的线程都能访问(self是最方便的所对象)
        d.互斥锁的范文应该尽量小,但一定要锁住资源的'读写'部分
        e.加锁后程序效率比不加锁要"低",因为线程要等待解锁,牺牲了性能保证安全性;}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • IOS多线程实现方案一 (pthread、NSThread) 在iOS开发中,多线程是我们在开发中经常使用的一门技...
    3099d00a659e阅读 3,653评论 1 51
  • .一.进程 进程:是指在系统中正在运行的一个应用程序,每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空...
    IIronMan阅读 4,471评论 1 33
  • 一、多线程概述 1、进程,线程 进程:进程是指在系统中正在运行的一个应用程序,每个进程之间是独立的,每个进程均运行...
    一叶清帆阅读 271评论 0 1
  • A我今天学到了什么 垂直水平居中的3种方法 1.用transform垂直水平居中 2.用position水平居中 ...
    孔子曰_f425阅读 297评论 1 0
  • 章节目录 第二十四章:比武(二) 接下来各门各派陆续有人上台比试,有的头阵就败了下来,有的则连胜几场,还有的被拳脚...
    南语上阅读 336评论 2 10