双重缓冲
在计算机图像学领域,能够快速和顺利地显示图形是非常重要的,一个标准的技术是在两个不同的存储区之间进行切换:两个缓冲区。当第一个缓冲区在使用的时候,第二个缓存就被填充。然后,当第一个缓冲区的内容已经显示完毕,显示切换到第二个缓冲区,因此,在显示图像时就没有中断现象。之后,当第二个缓冲区被用来显示图像时,显示下一个图像所需要的信息就会被填充到第一个缓冲区里。
在主题公园里,或者在任何一个成批接待顾客的地方,我们都可以找到完全相同的流程。来看一下那些演出或者其他同时接待成批顾客的娱乐活动,当第一批顾客开始享受娱乐的时候,还有一批顾客正在等待,我们怎么能让在队列中的等待变得令人愉快呢?我们把它转变成对它自身的体验。
我们把第二批顾客组成与可以参与活动体验的数量相同的一组,然后把他们带到一个叫做“报告室”或“准备室”的地方,在那里,这些等待中的人们开始得到娱乐,也许是会得到即将参与项目的解释,或被告知等待参与的项目的情况和背景信息。结果,人们会认为这个环节也是整个体验的一部分,这比让他们排队等待要好得多。是的,在他们身后,依然还有排队等待的人们,但是这条队列由于有两倍于之前的人数参与到了娱乐活动中而变得短了,大家都是赢家。
空间上的双重缓冲:双向结算通道
在双向结算通道的设计中可以看到双重缓冲原则的一种形式。在这里,收银员在收银台的前面,面对着两侧的顾客——左边和右边。收银员等待左侧的顾客,然后,服务结束以后,转向右侧的已经准备好接受服务的顾客,这样左侧的顾客就有时间来收拾东西和离开,而且他身后的顾客也可以作好接受服务的准备。收银员在两侧顾客之间循环收银,让没有被服务的那一边的顾客有时间在交易开始时作好准备,以及在结束后收拾整理和离开,而不需要延误后面顾客的时间。对所有人来说这都是顺利、有效而且愉快的。但是,这确实需要在商店里占用更多空间,而且可能需要对原有设备进行重新布局。
这里的设计原则是认识到顾客需要空间和时间去为交易作好准备,然后,在结束交易后需要更多的空间和时间去收拾整理。通过提供两个空间,两个缓冲区,前一位顾客就都不会耽误下一位的时间。
暂时的双重缓冲:收银通道
双面的收银通道是一个空间上的双重缓冲,在收银台的每一边都有一个缓冲。双重缓冲的另一种使用方法是暂时的,提供足够的线性空间来分隔操作过程:作好准备、结算总价、收拾整理,从而使下一个顾客在上一个顾客还没有结束时就可以在缓冲区里开始作准备。使用这种方法的一个很好的例子就是超市里的收银通道。
超市经常使用线性的空间来区分开作准备、结算和收拾整理。一个自动传送带将物品从准备的位置传送到收拾整理的位置,传送带的长度足以容纳下几个顾客的物品,通常会有一个隔离条来隔开物品。当一个顾客的东西结算完毕,传送带会将下一个顾客的物品送到收银员面前,空出位置来让后面的顾客放物品。此外,当每一个物品结算完后,它会被运送到一个更大的收拾整理区,在这里另外一个服务人员或者顾客自己可以将购买的物品打包,这样,收银员就可以接待下一个顾客了。
暂时性双重缓冲:汽车餐馆
免下车餐厅(汽车餐厅)使用的是一个暂时性双重缓冲机制。顾客们驾驶他们自己的汽车到达一个订购窗口,下单,然后他们继续开到外卖窗口,这个距离通常被有意设置得较长,有时甚至会要求顾客绕到建筑物的拐角处,这样的安排有两个目的。首先,车开走后为下一个顾客腾出了订餐窗口;其次,在两个窗口之间开车所需的时间让服务人员有充分的时间准备好顾客需要的食物。整个线性过程被分成两个步骤,下订单,然后取餐和付款,也为两个队列留下了空间:一个是等待确定订单(这里的等待时间是有用的,让顾客有时间来仔细察看菜单并作出决定),另一个队列是等待食物准备就绪和付款。如果可以在取餐之前加入一个分开的付款的位置,流程就会变得更加有效。
暂时性双重缓冲:咖啡店
很多咖啡店和快餐店使用在一个窗口订餐而在另一个窗口取餐的方式来建立线性的暂时性双重缓冲。同样,这种分开的操作方式可以获得更高的效率。人们下订单时不需要因为等待前一个顾客付款和取食物而耽误时间。另外,分开的方式为多个队列提供了空间,这尤其重要,因为在这些地方,食物不会按照下订单的顺序而准备,能被很快准备好的食物会跑到取餐队列的前面,而复杂的食物就会被延迟到后面。一个线性队列的移动速度是由准备得最慢的物品的速度决定的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论