提到线程第一反应其他概念进程,操作系统。
线程就是干活的人。多线程就是多个人干活。线程可以分ui线程和工作线程。ui线程就是前台工作者,一般都是小姑娘。工作线程就是后台工人(干些苦活累活的)
前台吩咐后台干活,后台干完了要通知前台。这就是男女搭配,干活不累。前台和后台共用一个厕所。这时男女有别,所以门上需要一个缩。需要谁先占用,谁使用。
线程争夺资源交互模型:生产者-消费者;读写;早餐问题;特别注意;线程死锁问题
进程则是资源提供者,负责管理各种资源。
进程是个容器,线程则是在进程里面跑。
多线程的问题
1)死锁
2)无限延迟
3)竞争
同步问题的出现
1)数据从内存装载到寄存器
2)在寄存器上运算
3)数据从寄存器写回内存
这三个步骤存在交替,就出现问题了。
同步机制:
锁:
信号量 : 比互斥量有更好的并发性
假如我们用互斥量来控制对缓冲的访问,那么生产者,消费者不能同时访问缓冲。然而,我们知道在同一时刻,不同线程访问缓冲的不同部分并没有什么危害。
线程的作用
1)解决执行较长时间的操作而不至于用户界面失去响应。
2)提高多核使用率。
使用线程的主要想法是希望它们可以尽可能并发执行,而一些关键点上线程之间需要停止或等待。例如,假如两个线程试图同时访问同一个全局变量
累了,不写了。继续写我的程序了。