NSThread总结

线程的创建


name 设置现场的名字   priority设置线程的优先级(优先级在0-1之间默认是0.5 ,值越大,线程执行的概率越高)  start()方法启动线程   *要不是配置name  priority完全根据自己的需要   不需要的话可以忽略

t2创建的线程是异步的   不会阻塞主线程 (详细见下文) 所以输出的结果是t1和t2交替运行的结果

从上文代码中可以看到下载图片时开启了一个新的线程  当下载完成后返回到主线程配置图片

Demo:huxiao123/NSThreadDownload · GitHub

线程的取消和退出

废话🙊  先撸代码

可以看出线程的取消和退出完全不是一回事,取消一个线程后线程并没有被释放,只有调用exit()方法才会退出,释放掉内存。

当我们想获取一个线程的名字时可以通过[TSThread currentThread].name 来获取线程的名字

可以通过isCancellid()方法判断一个线程是否被取消

由于上文中使用了一个异步线程,所以打印出的结果是交替进行,切线程B只执行了99次就退出

线程🔒(这里不做详细介绍 只是简单认识一下  后面会单独拿出来总结)

在一个场景中, 对于一个共享资源,允许多个线程同时读取(GET),但为了保护资源的正确性,同一时刻只能有一个线程修改(SET)共享资源, 这种情况下就要使用线程🔒来对共享资源进行保护和访问限制。

1.@synchronized(self){

               要执行的动作

}

上面的[NSThread sleepforTimeInterval:0.01] 只是为了调试用   不需要的话可以取消

2.NSLock  它通过两个方法来进行资源的访问限制  加锁 [(NSLock *)Lock lock]  解锁 [_(NSLock *)Lock unlock]     把要执行的动作放在两个方法直接就行了

Demo:huxiao123/TestBank · GitHub 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容