美文网首页iOS 基础知识
iOS 多线程基础 二、pthread

iOS 多线程基础 二、pthread

作者: PPFSaber | 来源:发表于2018-03-21 20:02 被阅读7次

    概述:pthread是POSIX可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX )的多线程开发框架,它是一个跨平台的可移植的框架,适用于Unix\Linux\Windows。 它的历史其实要比iOS系统要久远的多,所以pthread是iOS倒入的第三方的框架。如下图

    iOS系统库

    在user/include中放置的基本上都是苹果倒入的第三方的框架。不过由于它是一个偏向底层的c语言封装的早期框架,需要程序员自己管理线程的生命周期,所以在使用上难度会比较大,在新的技术出现之后,现代开发中已经很少会用到pthread技术了。因此对于pthread本文也只会简单的介绍一下使用方法。

    废话不多说 直接上代码

    -(void)pthreadDemo{
        
        /**
         pthread 是属于 POSIX 多线程开发框架
         
         参数:
         1.指向线程代号的指针
         2.线程的属性
         3.指向函数的指针
         4.传递给该函数的参数
         
         返回值
         - 如果是0,标示正确
         - 如果非0,标示错误代码
         
         void *   (*)      (void *)
         返回值   (函数指针)  (参数)
         void *  和OC中的  id 是等价的!
         
         
         */
        NSString * str = @"hello Hank";
        pthread_t threadId;
        /**
         - 在 ARC 开发中,如果涉及到和C语言中的相同的数据类型进行转换,需要使用 __bridge "桥接"
         - 在 MRC 不需要
         */
        
        int result = pthread_create(&threadId, NULL, &demo, (__bridge  void *)(str));
       
        if (result == 0) {
            NSLog(@"OK");
        }else{
            NSLog(@"error %d",result);
        }
        
        
        
    }
    
    void * demo(void * param){
        NSLog(@"%@ %@",[NSThread currentThread],param);
        
        return NULL;
    }
    
    

    注意:由于pthread 需要程序员自己管理线程的生命周期,所以当你执行完任务之后在合适的时间手动调用void pthread_exit(void * _Nullable) 来结束线程。

    相关文章

      网友评论

        本文标题:iOS 多线程基础 二、pthread

        本文链接:https://www.haomeiwen.com/subject/ugknqftx.html