第17章 多线程编程
17.1 填空
Windows使用CreateProcess()函数创建进程,用CreateThread()函数创建线程。
等待进程或者线程执行结束使用WaitForSingleObject()或WaitForMultipleObjects()函数。
17.2 问答
17.2.1 根据进程与线程的设置,操作系统大致分为哪些类型?
(1)单进程、单线程,MS-DOS大致是这种操作系统;
(2)多进程、单线程,多数UNIX(及类UNIX的LINUX)是这种操作系统; (3)多进程、多线程,Win32(Windows NT/2000/XP等)、Solaris 2.x和OS/2都是这种操作系统;
(4)单进程、多线程,VxWorks是这种操作系统。 17.2.2 简述网络服务器的设计模式。
服务器可以分为循环式(iterative)、并发式(concurrent)和反应式(reactive)等几大类。
循环式服务器在处理一个请求时,要么将其他请求排成队列,要么忽略它们,它最适合以下两种服务:1、短期服务;2、不经常运行的服务。
并发式服务器同时处理多个客户请求,要么使用多线程,要么使用多进程。它非常适合“I/O操作频繁(I/O-bound)”的服务或“执行时间会变化”的长周期服务。
反应式服务器通常是通过“同步事件多路分离”策略来实现在一个线程中同时处理多个请求。它本质上是循环式的。因此存在以下局限性:1、编程的复杂性增加;2、可靠性和性能降低。
225