您的位置:首页 > 移动开发 > IOS开发

多线程的基本概念和用法

2013-08-21 21:51 288 查看
进程的基本概念

每一个进程都是一个应用程序,都有一个独立的内存空间,一般来说一个应用程序存在一个进程,但也有多个进程的;

同一个进程中的线程共享内存中内存和资源;

多线程的几本概念

每一个程序都有一个主线程,程序启动时创建(调用main来启动);

主线程的生命周期和应用程序绑定的程序结束时,主线程也就停止了;

多线程技术表示,一个应用程序有多个线程,使用多线程能提供CPU的使用率,防止主线程的堵塞;

任何有可能堵塞主线程的任务不要在主线程中执行(访问网络);

 

在创建多线程的时候你要考虑到多线程的成本:

        多线程会占用你应用程序(和系统的)的内存使用和性能方面的资源。每个线程都需要分配一定的内核内存和应用程序内存空间的内存。管理你的线程和协调其调度所需的核心数据结构存储在使用Wired Memory的内核里面。你线程的堆栈空间和每个线程的数据都被存储在你应用程序的内存空间里面。这些数据结构里面的大部分都是当你首次创建线程或者进程的时候被创建和初始化的,它们所需的代价成本很高,因为需要和内核交互。

        在你应用程序创建一个新的用户级线程所需的大致成本。这些成本里面的部分是可配置的,比如为辅助线程分配堆栈空间的大小。创建一个线程所需的时间成本是粗略估计的,仅用于当互相比较的时候。线程创建时间很大程度依赖于处理器的负载,计算速度,和可用的系统和程序空间。

        当编写线程代码时另外一个需要考虑的成本是生产成本。设计一个线程应用程序有时会需要根本性改变你应用程序数据结构的组织方式。要做这些改变可能需要避免使用同步,因为本身设计不好的应用可能会造成巨大的性能损失。设计这些数据结构和在线程代码里面调试问题会增加开发一个线程应用所需的时间。然而避免这些消耗的话,可能在运行时候带来更大的问题,如果你的多线程花费太多的时间在锁的等待而没有做任何事情。

下面创建一个线程

1.使用NSThread

/第一种

NSThread* myThread = [[NSThread alloc] initWithTarget:self selector:@selector(myThreadMainMethod:) object:nil];

 [myThread start]; // Actually create the thread

/第二种

[NSThread detachNewThreadSelector:@selector(myThreadMainMethod:) toTarget:self withObject:nil];

 /第三种

[NSTHread performSelctorInbackground:@selector(myThreadMainMethod:) withObject:nil];

 

 

更多创建线程方法以及详细的线程安全请下载“多线程编程指南”

下载地址:http://download.csdn.net/detail/qq348931837/5908901

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  多线程 ios