iOS-多线程编程学习之pthread创建线程(二)

  首先这是iOS开发中最不常用的创建线程的方式,则是使用C中线程库的API来创建线程。不过作为学习我们不妨多了解一下,对比观察观察。

话不多说,直接上代码。例子很简单也很狗血。从结果输出我们也可以看出异步多线程的特点就是线程是无序的执行的。

一、代码

    #import <Foundation/Foundation.h>
    #import <pthread.h>

    void newThread();
    void * run(void *param);

    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            newThread();
            //主线程休眠2秒,因为主线程结束了子线程也就结束了啊!
            [NSThread sleepForTimeInterval:2000];
        }
        return 0;
    }

    //pthread方式创建线程
    void newThread()
    {
        //定义一个线程
        pthread_t thread;
        //创建一个线程
        //参数一:创建线程的指针
        //参数二:线程属性
        //参数三:线程执行的函数的指针
        //参数四:难道是传执行的函数的参数值?
        pthread_create(&thread, NULL, run, NULL);

        //创建第二个线程
        pthread_t thread2;
        pthread_create(&thread2, NULL, run, NULL);
    }

    void * run(void *param)
    {
        for (int i = 0; i < 1000; i++) {
            NSLog(@"%zd------->%@", i, [NSThread currentThread]);
        }
        return NULL;
    }

二、输出结果

从输出结果中我们可以看出,线程可能是交替运行也可能是不按顺序的(实际上就是无序的)。这里我们只是截取了部分输出信息而已。

2016-02-23 11:02:25.457 ThreadDemon[5739:385467] 0-------><NSThread: 0x100209ec0>{number = 2, name = (null)}
2016-02-23 11:02:25.458 ThreadDemon[5739:385466] 0-------><NSThread: 0x10020bc60>{number = 3, name = (null)}
2016-02-23 11:02:25.458 ThreadDemon[5739:385467] 1-------><NSThread: 0x100209ec0>{number = 2, name = (null)}
2016-02-23 11:02:25.458 ThreadDemon[5739:385466] 1-------><NSThread: 0x10020bc60>{number = 3, name = (null)}
2016-02-23 11:02:25.458 ThreadDemon[5739:385467] 2-------><NSThread: 0x100209ec0>{number = 2, name = (null)}
2016-02-23 11:02:25.458 ThreadDemon[5739:385466] 2-------><NSThread: 0x10020bc60>{number = 3, name = (null)}
2016-02-23 11:02:25.458 ThreadDemon[5739:385467] 3-------><NSThread: 0x100209ec0>{number = 2, name = (null)}
2016-02-23 11:02:25.458 ThreadDemon[5739:385466] 3-------><NSThread: 0x10020bc60>{number = 3, name = (null)}
2016-02-23 11:02:25.458 ThreadDemon[5739:385467] 4-------><NSThread: 0x100209ec0>{number = 2, name = (null)}
2016-02-23 11:02:25.458 ThreadDemon[5739:385466] 4-------><NSThread: 0x10020bc60>{number = 3, name = (null)}
2016-02-23 11:02:25.458 ThreadDemon[5739:385467] 5-------><NSThread: 0x100209ec0>{number = 2, name = (null)}
2016-02-23 11:02:25.458 ThreadDemon[5739:385466] 5-------><NSThread: 0x10020bc60>{number = 3, name = (null)}
......

三、参考资料

1.iOS开发–四种多线程技术方案

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值