|  
 
 
1.  创建线程的平均开销:    
                  内存堆栈:   主线程—— 1M ,  子线程——512K 
                         时间:   基本可以忽略不计 
 2.  创建线程的多元宵祝福网页 种方法:   
  NSThread,   POSIX(基于C语言支持的API), NSObject的performSelector 
 3.  在工程没有使用ARC时,线程执行体代码中创建自动释放池 
 4. 为了线程安全,尽量避免在线程中使用共享的数据结构 
 5. runloop: 线程中的一个事件处理循环,用来不停的调度工作以及处理输入事件. 
每一个线程都有自己的runloop, 主线程是默认开启的,子线程是需要手动开启。 
        runloop监视每个输入源,处理事件,如果没有事件,runloop休眠,不消耗CPU资源 
需要使用runloop的四种情况: 
  a.使用端口或自定义输入源和其他线程通信 
  b.子线程中使用了定时器 
  c.cocoa中使用任何performSelector到了线程中运行方法 
  d.使线程履行周期性任务 
在子线程中用了NSURLConnection异步请求,那也需要用到runloop,不然线程退出了,相应的delegate方法就不能触发。 
 6. 线程同步:  a. 原子操作 
b. 内存屏障和volatile变量 
       内存屏障: 确保内存操作按照正确顺序工作的非阻塞同步工具 
      volatile : 一般编译器会优化代码通过加载这些变量的值进入寄存器。 对于线程之间共享的变量,使用volatile强制编译器每次都从内存读取数据,确保数据的同步。 
c. 锁: mutex, @synchronized()指令 [1] [2] 下一页  
 |