为什么引入线程?
1)通过将进程分解成可以准并行运行的多个顺序线程,程序设计模型会变得更简单。
服务器设计可以遵循下面三种模型:
1.多线程。特性:并行性,阻塞系统调用
2.单线程进程。特性:无并行性,阻塞系统调用
3.有限状态机。特性:并行性,非阻塞系统调用,中断
2)线程比进程更轻量级,它们比进程更容易(即更快)创建,也更容易撤销
进程需要管理资源的创建、打开和释放问题,线程则不用考虑
切换进程需要通过内核刷新cache,重新加载所有资源,而切换线程则不需要
3)如果存在大量计算和大量的I/O处理,拥有多个线程允许这些活动彼此重叠进行,会加快应用程序执行的速度。
个人理解:
在这里,线程有一点点像VHDL里面的每个process,都是并行运行的。但是线程在内存、变量等运用上更为复杂
按照多线程的工作方式,输入数据、处理数据和输出数据可以全部同时进行。当然,这种模型只有当系统调用只阻塞调用线程而不是阻塞整个进程时,才能正常工作。
经典的线程模型
线程与进程
Linux的线程模型模糊了进程与线程的分界线,不属于经典线程模型的讨论范围
1.进程有存放程序