线程的基本信息

  • 空间

主线程栈空间大小为 1M = 1024KB 无法修改(最大值)
子线程默认栈控件为 512kb (最大值)
并且,一开始创建线程的时候空间有可能很小,随着使用而增加,
主线程的栈实际使用空间 <= 1024KB
子线程的栈实际使用空间 <= 512KB
线程启动前,stackd空间大小可以被改变
size 分配内存的大小单位是1KB,线程创建在栈上,stack的最小值是16kb,而且大小必须是4的倍数 16 20 24 28 32 36 40kb 。。。

  • 时间

时间消耗:(1毫秒 = 1/1000 秒)
创建:4-5毫秒
启动:5-100毫秒 平均 29毫秒
总结:开销较大
原因:上下文切换带来的开销(CPU在某个时间点只能处理一个线程里的一个事情,如果处理另一个线程,需要上下文切换)

-(NSThread *)creatThreadWithTarget:(id)target selector:(SEL)selector object:(id)argument stackSize:(NSUInteger)size{

    if (size % 4096 != 0) {
        return nil;
    }
    
    NSThread *t = [[NSThread alloc] initWithTarget:target selector:selector object:argument];
    t.stackSize = size;
    return t;
    
}

推荐阅读更多精彩内容