在.
Windows,像如今大多的操作系统一样,允许你在同一时间运行多个程序。每个程序原本就是一个进程(或者在少数情况下,是几个进程的集合)。一个进程是包含了数据和代码的内存地址空间的集合,在这个内存空间中还包括了这个进程在处理过程中所需要的其它系统对象。在Windows的每一个进程中都可以有多个线程在执行。一个线程的执行,或者不止一个线程的执行,都是在代码中执行一条路径。当进程开始执行的时候,一个线程就开始执行了,就像程序中的main函数一样。随着线程的执行,主线程会逐渐产生需要的其它线程。但是,大多的程序都只是线程的一次执行,换一种说法,就是主线程在执行中不产生新的线程。
还有一种情况会导致线程的产生。就是在有多个请求同时申请同一种类型的对象的时候。例如,当在Web服务器正在执行的时候又出现了一个请求申请这个服务器,这时,就会产生一个新的线程来服务这个请求。使用Web服务时,只要有对Web服务的请求,就会自动产生一个线程。因为是这样,Web服务产生时就是多线程的。
在COM中,让一个COM对象处理多线程是非常重要的,这样你就应该了解外部的事物是如何和该COM对象进行交互的。程序员通过用Visual Basic and Delphi创建的大多COM对象都是单线程的。换句话说,就是在它们内部并不了解在进程中如何执行多线程。
但是可选择的COM对象却有单线程或者多线程。单线程的COM对象在同一时间内只执行一个线程。多线程对象将允许在同一时间内运行多个线程。你可能听说过自由线程,它是多线程对象的一个别名。没有严格的限制要求你必须对每个对象使用同样的线程模型。