1、描述进程和线程的区别(面试很常问的问题)。
答案:进程是程序的一次执行。线程可以理解为进程中执行的一段程序片段。在一个多任务环境中下面的概念可以帮助我们理解两者间的区别。进程是独立的,这表现在内存空间、上下文环境,线程运行在进程空间内。一般来讲(不使用特殊技术),进程无法突破进程边界存取其它进程内的存储空间,而线程由于处于进程进程空间内,所以同一进程所产生的线程共享同一内存空间。同一进程中的两段代码不能够同时执行,除非引入线程。线程属于进程的,当进程退出时该进程所产生的线程都会被强制退出并清除。线程占用的资源要少于进程所占用的资源。进程和线程都可以有优先级。
2、在网络编程中设计并发服务器,使用多进程架构和使用多线程架构有什么区别。
解析:
进程:子进程是父进程的复制品。子进程获得父进程数据空间,堆和栈的复制品。
线程:相对于进程而言,线程是一个更加接近于执行体的概念,它可以同进程的其它线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。
两者都可以提高程序的并发度,提高程序运行效率和相应时间。
线程和进程使用上各有优缺点,线程执行开销小,但不利于资源管理和保护;而进程正好相反。同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。
答案:用多进程时每个进程都有自己的地址空间,线程则共享地址空间。所有其它区别都由此而来。速度:线程产生的速度快,线程间的通信快,线程间的切换快等,因为他们在同一个地址空间内。资源利用率:线程的资源利用率比较好也是因为它们在同一个地址空间内。同步问题:线程使用公共变量/内存时需要使用同步机制,还是因为它们在同一个地址空间内。
多线程与多进程问题
最新推荐文章于 2023-12-28 22:00:00 发布