在OS/2的Presentation Manager中,每个线程可以建立一个消息队列,也可以不建立。如果希望从线程建立窗口,那么一个PM线程必须建立消息队列。否则,如果只是进行许多的数据处理或者图形输出,那么线程不需要建立消息队列。因为无消息队列的程序不处理消息,所以它们将不会当住系统。唯一的限制是一个无消息队列线程无法向一个消息队列线程中的窗口发送消息,或者呼叫任何发送消息的函数(不过,它们可以将消息递送给消息队列线程)。
这样,PM程序写作者学会了如何将它们的程序分隔为一个消息队列线程(在其中建立所有的窗口并处理传送给窗口的消息)和一个或者多个无消息队列线程,在其中执行冗长的背景工作。PM程序写作者还了解到「1/10秒规则」,大体上,程序写作者被告知,一个消息队列线程处理任何消息都不应该超过1/10秒,任何花费更长时间的事情都应该在另一个线程中完成。如果所有的程序写作者都遵循这一规则,那么将没有PM程序会将系统当住超过1/10秒。
评论