这是我参与「第四届青训营」笔记创作活动的第9天,进行多线程编程的相关学习。
进程是每个app或者说程序运行的一个实例,也是进行资源分配的最小单位。
线程是操作系统实施调度的最小单位,一个进程可以包含多个线程。
串行指的是任务有序的单个执行。 并行即同时执行多个任务。 并发与以上两种现象不同,指的是有多个任务同时等待执行,更侧重于这个现象的产生。
runloop机制,是事件处理的一个具体实现。它可以让线程在适当的时候不会被关闭。
主线程指的是iOS App启动时默认开启的一条线程,在程序启动时,主线程的runloop就会被启动,直到程序结束运行。而其他线程则需要手动开启runloop。 主线程需要开启runloop,是因为需要及时刷新相关UI界面并对交互事件进行处理。
多线程编程之时,我们会将冗长耗时的操作赋予子线程,结束时再回到主线程刷新ui,起到资源合理分配的作用。
多线程编程的优点: 1.提高应用程序的响应。对图形化界面更有意义,可增强用于体验。
2.提高计算机系统CPU的利用率
3.改善程序结构。将既长又复杂的进程分为多个线程,独立运行。利用理解和修改。
相关缺点: 1.占用内存,降低程序运行的稳定性和流畅程度。 2.大量线程的创建与处理,增加了程序员处理问题的难度,也增加了后续维护的难度。
锁:信号量是锁的一种实现形式,它允许多个线程并发访问资源,控制并发访问的数量。