3.7 多线程链表
在一个单向链表中,一个单元格会有到下一个单元格的链接。在一个双向链表里,每个单元格都有到前一个单元格和到后一个单元格的链接。双向链表使用两种链接,以提供两种不同的移动方法:向前或向后。
可以为一个链表中的单元格添加其他链接,以提供更多的单元格之间的移动方式。例如,建一个Planet类来保存有关太阳系的行星的信息。则可以给Planet类加入一个名叫NextDistance的链路来链接到下一个最接近太阳的行星。沿着NextDistance链接遍历所有星球,顺序将是:水星,金星,地球,火星,木星,土星,天王星和海王星的行星(如果把冥王星当作一个行星的话,也可以选冥王星)。
同样,可以添加其他链路来依照质量、直径等特点排序行星。被这样的一种链路设定来遍历所有行星的线路被称为线程。
用单个线程来运行算法是很简单的,把它看做一个简单的链表即可,尽管在可视化的情况下所有的线程在同一时间内表现得比较混乱。例如,图3-8展示了一个三线程的行星链表。最细的线程通过行星到太阳距离的远近来依次访问行星。中等粗细的线程通过质量的大小来依次访问,而最粗的线程将通过直径大小来依次访问行星。
注 其他的数据结构也能拥有线程。比如,一棵树可能提供线程令程序可以按照对于树来说非典型的顺序来访问其中的结点。
时间: 2024-11-08 23:09:18