NSThread 多线程相关

1.下面的代码,有2点需要注意,1>就是 就是thread:所传得参数,这里传得的是nsarray  当然也可以传其他的类型。2>
[self performSelectorOnMainThread:@selector(update) withObject:nil waitUntilDone:YES]; 这个函数的作用是通知主线程进行一下操作,比如这里是更新btn 的title。主要的参数需要注意的是 waitUntilDone ,如果是YES  那就需要等到 update操作完之后才会执行NSLog(@"-------------ddddd-----------");以及以后的代码,如果设置为NO的话,那不需要等到update完成就会执行。

    NSArray * array = [NSArray arrayWithObjects:@"a",@"b",@"c", nil];

    therad = [[NSThread alloc]initWithTarget:self selector:@selector(thread:) object:array];

    [therad start];

-(void)update
{
    [btn setTitle:@"bbbbb" forState:UIControlStateNormal];

    for( int i = 0; i < 100; ++ i )
    {
        NSLog(@"i:%d",i);
    }
}

-(void)thread:(NSArray *)array
{
    for( int i = 0; i < 3; ++ i )
    {
        sleep(1);
        NSLog(@"%@",[array objectAtIndex:i]);
    }

    [self performSelectorOnMainThread:@selector(update) withObject:nil waitUntilDone:YES];

    NSLog(@"-------------ddddd-----------");

}
时间: 2025-01-09 05:40:47

NSThread 多线程相关的相关文章

iOS开发Swift篇(02) NSThread线程相关简单说明

iOS开发Swift篇(02) NSThread线程相关简单说明 一 说明 1)关于多线程部分的理论知识和OC实现,在之前的博文中已经写明,所以这里不再说明. 2)该文仅仅简单讲解NSThread在swift语境中的一些使用和注意点,别他. 3)本文涉及代码可以从https://github.com/HanGangAndHanMeimei/Code地址获得. 二 NSThread的基本使用和创建 1)基本用法(主线程|当前线程) 1 //1.获得执行该方法的当前线程 2 let currentT

进程、线程、多线程相关总结

进程.线程.多线程相关总结 一.说说概念 1.进程(process) 狭义定义:进程就是一段程序的执行过程. 广义定义:进程是一个程序关于某个数据集合的一次运行.它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元. 简单的来讲进程的概念主要有两点:第一,进程是一个实体.每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region).数据区域(data region)和堆栈(stack region).文本区域存储处理器执行的代码:数

多线程-相关定义

进程的定义: 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 线程的定义: 1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程) 线程是进程的基本执行单元,一个进程(程序)的所有任务都在线程中执行 线程的串行: 1个线程中任务的执行是串行(顺序执行的)的 如果要在1个线程中执行多个任务,那么只能一个一个地按顺序执行这些任务 也就是说,在同一时间内,1个线程只能执行1个任务 多线程的定义: 1个进程中可以开启多条线程,每条线程可

多线程相关

IOS支持三个层次的线程编程,从底层到高层(层次越高使用越方便,越简洁)分别是: 1:Thread: 2:Cocoa Operations: 3:Grand Central Dispatch: 简介: Thread是抽象层次最低的,另外两种线程应用给予thread进行了封装,对于程序员而言,thread相对麻烦,需要程序员管理线程周期,但是效率最高.thread包含两种:Cocoa threads——使用NSThread 或直接从 NSObject 的类方法 performSelectorInB

NSThread多线程总结(一)

一: NSThread 小节 //1. object是传值的对象 创建完成后 自动启动 [NSThread detachNewThreadSelector:@selector(download:) toTarget:self withObject:@"http:"]; //2. 第二种方式 隐事创建  也是自动启动 [self performSelectorInBackground:@selector(download:) withObject:nil];    //3. 一个NSTh

多线程相关------临界区CriticalSection

多线程一直是短板,整理相关知识方便查询 临界区(Critical Section) 临界区是一段供线程独占式访问的代码.在任意时刻,若有一个线程正在访问该代码段,如果其他所有试图访问的线程都将被挂起,直到访问的线程离开该代码段才可进入,保证线程安全. 适用于控制数据访问. 因其线程所有权其可以用于线程间互斥,而不能用于同步. 相关函数 InitializeCriticalSection初始化临界区对象 void WINAPI InitializeCriticalSection( _Out_ LP

iOS-有限缓冲问题经典案例-生产者消费者-NSThread多线程

1 #import "ViewController.h" 2 3 @interface ViewController () 4 { 5 NSMutableArray *_arr; 6 NSCondition *_condition; 7 } 8 @end 9 10 @implementation ViewController 11 12 - (void)viewDidLoad { 13 [super viewDidLoad]; 14 15 _arr = [NSMutableArray

java多线程相关问题整理

0.Java 中多线程同步是什么? 在多线程程序下,同步能控制对共享资源的访问.如果没有同步,当一个 Java 线程在修改一个共享变量时,另外一个线程正在使用或者更新同一个变量,这样容易导致程序出现错误的结果. 1.解释实现多线程的几种方法? 一 Java 线程可以实现 Runnable 接口或者继承 Thread 类来实现,当你打算多重继承时,优先选择实现 Runnable. 2.Thread.start ()与 Thread.run ()有什么区别? Thread.start ()方法(na

了解一些多线程相关的知识

一.基础知识a)多线程的基础类为Thread,实际应用中一般用线程池,而不会直接用到Thread类.Thread基本的使用为: int i = 5;Thread thread = new Thread((p) => {  Console.WriteLine(p);});thread.Start(i); 可以用lambda写法,也可以指向一个方法,参数通过Start(i)来传递.b) 线程间的同步有几种方法可以在一个方法加上[MethodImpl(MethodImplOptions.Synchro