多线程知识点

2016-09-12  本文已影响37人  Yanni_L

0708线程

多线程

pthread (了解,程序猿几乎不用)

    // 创建线程
    pthread_t pthread;
    /*
    // 执行线程参数
    // thread_t *restrict:线程的地址
    // const pthread_attr_t *restrict
    // void *(*)(void *) 指向函数的指针
    // void *restrict
    pthread_create(pthread_t *restrict, const pthread_attr_t *restrict, void *(*)(void *), void *restrict);
    */
    // 一般会这样写
    // run:指向函数的指针,将需要执行的代码放入指向函数的指针中。
    pthread_create(&thread, NULL, run, NULL);

NSThread (掌握)


    // 创建线程
    NSThread *thread = [[NSThread allow] initWithTarget:self selector:@selector(run:) object:@"jack"];

    // 线程名称
    thread.name = @"myThread";

    // 启动线程
    [thread strat];

    // 直接创建线程,调用run方法,参数为rose
    [NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@"rose"];

    // 直接创建线程,然后运行,调用run方法,参数为rose
    [NSThread performSelectorInBackground:@selector(run:) withObject:@"jack"];


    // 线程延时两秒运行之后程序
    1.[NSThread sleepForTimeInterval:2];

    2.[NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:2]];

    // 延时到遥远的未来
    1.[NSThread sleepUntilDate:[NSDate distantFuture]];

    // 直接退出线程
    [NSThread exit];

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

    // 主线程相关用法
    + (NSThread *)mainThread; // 获得主线程
    - (BOOL)isMainThread; // 是否为主线程
    + (BOOL)isMainThread; // 是否为主线程

    // 获取1970年到现在走过的时间
    CFTimeInterval end = CFAbsoluteTimeGetCurrent();

    // 获取0时区当前的时间
     NSDate *begin = [NSDate date];

线程的安全

加载网络图片

     // 添加图片网络路径
     NSURL *url = [NSURL URLWithString:@"http://bgimg1.meimei22.com/list/2015-4-23/1/013.jpg"];

     // 将文件路径下得图片包装成对象
     NSData *date = [NSData dataWithContentsOfURL:url];

     // 将对象转成imget图片
     UIImage *image = [UIImaeg imageVithData:date];

     // 再将图片给需要显示的iamgeView
     imageView.image  = imaeg;

     // 加载图片路径
    NSURL *url = [NSURL URLWithString:@"http://bgimg1.meimei22.com/list/2015-4-23/1/013.jpg"];

     // 将图片转成对象
    NSData *date = [NSData dataWithContentsOfURL:url];

    UIImage *image = [UIImage imageWithData:date];

    // 进入主线程加载图片
    [self.image performSelector:@selector(setImage:) onThread:[NSThread mainThread] withObject:image waitUntilDone:NO];

上一篇 下一篇

猜你喜欢

热点阅读