多线程Demo1 了解

 
首先演示一下主线程的阻塞
 
//  DYFViewController.m
//  623-01-阻塞多线程
//
//  Created by dyf on 14-6-23.
//  Copyright (c) 2014年 ___FULLUSERNAME___. All rights reserved.
//
 
#import "DYFViewController.h"
 
@interface DYFViewController ()
 
@end
 
@implementation DYFViewController
- ( IBAction )btnOnClick {
     // 1.获取当前的线程
     NSThread * thread = [ NSThread currentThread];
     
     // 2.打印线程
     NSLog (@ "%@" , thread );
     
     // 3.执行一线耗时的操作
     for ( int i = 0; i < 9999; i++) {
         NSLog (@ "%@" , thread );
         // 此时点击按钮,在执行完耗时操作之前,按钮一直是高亮状态,期间用户点击其他的UI控件也不好响应
     }
}
 
- ( void )viewDidLoad
{
     [ super viewDidLoad];
     // Do any additional setup after loading the view, typically from a nib.
}
 
- ( void )didReceiveMemoryWarning
{
     [ super didReceiveMemoryWarning];
     // Dispose of any resources that can be recreated.
}
 

@end

 

 

 

容易发现,在耗时操作期间,其它UI操作都被延时了,造成用户的卡顿现象

 

--------创建子线程方法1--pthread

 

//  DYFViewController.m
//  623-02-pthread
//
//  Created by dyf on 14-6-23.
//  Copyright (c) 2014年 ___FULLUSERNAME___. All rights reserved.
//
 
#import "DYFViewController.h"
#import <pthread.h>
 
@interface DYFViewController ()
 
@end
 
@implementation DYFViewController
 
// c语言函数
void *run( void *data)
{
     // 1.获取当前的线程
     NSThread *cThread = [ NSThread currentThread];
     
     // 2.打印线程
     NSLog (@ "%@" , cThread);
     
     // 3.h耗时操作
     for ( int i = 0; i < 9999; i++) {
         NSLog (@ "%@" , cThread);
     }
 
     return NULL ;
}
 
- ( IBAction )btnOnClick {
     // 1.获取当前的线程
     NSThread * thread = [ NSThread currentThread];
     
     // 2.打印线程
     NSLog (@ "%@" , thread );
     
     // 3.执行一线耗时的操作 : 创建一套子线程
     
     pthread_t threadId;
     pthread_create(&threadId, NULL , *run, NULL );
    
}
 
 

@end

 
 

你可能感兴趣的:(demo)