`
sogotobj
  • 浏览: 662055 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

使用NSThread起线程

 
阅读更多

NSThread是起线程的主角,大部分时候我们使用这个类。

由于本人macbook暂时不能用,所以这里只贴出代码:

建一个view-based application.

在viewcontroller.h中

@interface tNSThreadViewController : UIViewController {
NSThread *t1;
BOOL bExit;
}
@property BOOL bExit;
- (IBAction)checkit:(id)sender;
- (IBAction)start2:(id)sender;
- (IBAction)start:(id)sender;
-(void)doSomething:(id)data;
@end

在viewcontroller.m中

#import "tNSThreadViewController.h"

@implementation tNSThreadViewController
@synthesize bExit;
-(void)doSomething:(id)data
{

/*[[t1 threadDictionary] setObject:@"kkk" forKey:@"k11"];
NSMutableDictionary * md = [t1 threadDictionary];
NSString *t = [md objectForKey:@"k11"];
NSLog(@"%@", t);
NSLog(@"kasdkf");*/
//NSString *d = (NSString *)data;
//NSLog(@"%@",d);
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *s = [NSString stringWithFormat:@"%d",1];
NSLog(@"%@",s);
while (true) {
[NSThread sleepForTimeInterval:0.5];
NSLog(@"IN thread");
tNSThreadViewController *inputData = (tNSThreadViewController *)data;
if(inputData.bExit)
break;
}
[pool release];


}
- (void)dealloc
{
[super dealloc];
}

- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];

// Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
bExit = NO;
[super viewDidLoad];
}


- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

- (IBAction)checkit:(id)sender {
bExit = YES;
if([NSThread isMultiThreaded]) {
NSLog(@"it is multi thread");
}
else {
NSLog(@"it is not multi thread");
}
}

- (IBAction)start2:(id)sender {
if(t1 != nil)
{

[t1 release];
t1 = nil;
}
t1 = [[NSThread alloc] initWithTarget:self selector:@selector(doSomething:) object:self];
[t1 setStackSize:1024*1024];
[t1 setThreadPriority:0.5];

[t1 start];

/*NSThread *t2 = [[NSThread alloc] initWithTarget:self selector:@selector(doSomething:) object:@"2"];
[t2 setStackSize:1024*1024];
[t2 setThreadPriority:0.9];

[t2 start];*/

}

- (IBAction)start:(id)sender {
//[self performSelectorInBackground:<#(SEL)#> withObject:<#(id)#>
[NSThread detachNewThreadSelector:@selector(doSomething:) toTarget:self withObject:nil];
}
@end

最后需要说明的是,iOS应用的主线程的栈大小缺省为1M,其他线程的栈大小缺省为512K,很多网上文章说,不能调这个大小,那是以讹传讹,如何调大小,请看我的代码。

分享到:
评论

相关推荐

    NSThread线程交互

    本篇文章将深入探讨NSThread线程的创建、交互以及常用方法。 首先,我们来看**线程的创建**。NSThread提供了两种创建方式:一种是通过继承NSThread类并重写`main`方法,另一种是通过实例化NSThread对象并传递一个...

    NSThread多线程

    4. 线程同步:如果你需要在线程间进行通信,可以使用`NSThread`s的`detachNewThreadSelector:toTarget:withObject:`方法来启动新线程,或者使用NSLock、NSCondition等同步原语来避免竞态条件。 5. 资源管理:与其他...

    swift NSThread线程同步买票小例子

    在这个"swift NSThread线程同步买票小例子"中,我们将深入理解如何使用NSThread进行线程同步,以及在并发编程中遇到的一些关键概念。 首先,线程同步是并发编程中的一个重要概念,它的目的是避免多个线程同时访问...

    iOS多线程之NSThread详解

    iOS多线程开发一 使用NSThread NSThread的基本使用 // demo说明 NSThreadDemoOne: 简单使用多线程,区分有多线程和没有多线的区别 NSThreadDemoTwo: 因为NSThread只能传一个一个参数,如果咬传递多个参数,使用封装...

    iOS多线程 (pthread,NSThread)简单Demo

    在`multi_thread_demo`这个项目中,你可能看到如何使用pthread和NSThread创建和管理线程的代码示例。通过阅读和运行这些代码,你可以更好地理解和掌握这两种多线程实现方式的使用场景和优缺点。在实践中,根据具体...

    IOS nsthread开辟一个分线程

    下面我们将深入探讨`NSThread`以及如何在iOS应用中使用它来实现多线程。 一、`NSThread`简介 `NSThread`是苹果提供的轻量级线程管理类,它代表了一个独立的执行路径或者说是“工作线程”。与更复杂的GCD(Grand ...

    NSThread 多线程

    这个文档是我在其他地方找到的,感觉对于初学者了解ios开发的线程使用很有帮助,在此分享一下.

    iOS多线程开发NSThread.pdf

    NSThread 是 iOS 中的一种多线程编程方式,使用 NSThread 可以创建和管理线程。NSThread 提供了多种创建线程的方式,包括 detachNewThreadSelector:toTarget:withObject: 和 initWithTarget: selector:object: 两种...

    IOS应用源码——NSThread.zip

    在这个名为"NSThread.zip"的压缩包中,我们很可能是得到了一个示例项目或者代码库,专门展示了如何在iOS应用中使用NSThread进行线程操作。现在,让我们深入探讨一下NSThread以及它在iOS开发中的关键知识点。 1. **...

    多线程GCD,NSThread,NSOperationQueue,详细解释Demo

    在子线程中刷新UI,通常需要回到主线程执行,无论使用GCD、NSThread还是NSOperationQueue,都需要确保UI更新在主线程进行,以免出现界面卡顿或数据不一致的问题。例如,可以使用`DispatchQueue.main.async`、`-...

    IOS应用源码——ui多线程的简单例子 NSThread.zip

    这个名为"NSThread.zip"的压缩包提供了一个简单的iOS应用源码示例,专门用于演示如何在iOS中使用NSThread进行多线程编程。 首先,我们要理解什么是多线程。在计算机系统中,线程是操作系统调度的基本单位,一个进程...

    NSThread GCD

    使用NSThread,开发者可以直接创建和管理线程,执行特定的任务。创建一个NSThread对象,然后调用其start方法,即可启动新的线程。以下是一个简单的示例: ```objc NSThread *thread = [[NSThread alloc] ...

    ios中NSThread停止比较郁闷的问题

    在iOS开发中,多线程技术是不可或缺的一部分,其中NSThread是苹果提供的轻量级线程实现。然而,处理线程的停止问题时,开发者往往会遇到一些困扰。本篇文章将深入探讨“iOS中NSThread停止比较郁闷的问题”,并提供...

    ios多线程编程

    创建线程的技术包括使用NSThread类、POSIX的多线程、NSObject类以及其他线程技术。配置线程属性时,可以设置线程的堆栈大小和线程本地存储等。 线程管理是确保多线程应用稳定运行的关键。它包括管理线程的生命周期...

    演示多线程加载图片NSThread NsOperation GCD

    本教程将重点讲解三种多线程技术:NSThread、NSOperation和GCD(Grand Central Dispatch),以及如何用它们来实现图片的异步加载。 首先,我们来看`NSThread`。`NSThread`是Apple提供的轻量级线程管理类,允许...

    iOS多线程编程技术之NSThread、Cocoa NSOperation、GCD

    #### 三、多线程使用示例 1. **NSThread示例**:创建一个`NSThread`对象,并在其内部执行一个耗时的操作。 2. **GCD示例**:使用GCD的`dispatch_async`函数将任务放入全局并发队列中执行。 3. **NSOperationQueue...

    ios多线程开发的常用四种方式和基本使用

    NSThread的使用较为简单,但不支持自动管理线程优先级和资源,因此需要开发者手动控制线程的生命周期。 NSOperation和NSOperationQueue是Apple推荐的多线程解决方案,它们提供了更高级别的抽象和任务调度。...

    iOS多线程GCD和线程锁的使用

    iOS多线程编程之Grand Central Dispatch(GCD)使用,卖票的例子来讲NSThread的线程同步,使用了两种锁,一种NSCondition ,一种是:NSLock,还有加了一个 线程3 去唤醒其他两个线程锁中的wait,里面的注释很已经写的...

    IOS多线程编程的3种实现方法

    前言 在多线程简介中,我已经说明过了,为了提高界面的流畅度以及用户体验。我们务必要把耗时的操作...经常使用NSThread进行调试,在实际项目中不推荐使用。 //获取当前线程 NSThread *current = [NSThread currentT

    YXNSThreadLession:使用NSThread写的一个多线程,包含了NSThread的所有常用方法,可以用来详细学习NSThread

    ##通过使用NSThread类来讲解iOS中的多线程,创建了12个线程,来下载12张图片,而且把最后一个线程的优先级设置成最高,其他线程在最后一个线程执行完毕之后在执行 ##ViewController.m ###1.点击按钮下载的方法来开始...

Global site tag (gtag.js) - Google Analytics