当林队长第二次穿越的时候,他就开始发现“是同一辆火车,但又有些不同”。教授的本意是让他用尽量不影响他人他事,必要时甚至可以直接枪杀每一个人轮番试验出谁是凶手的这种“低调”方式找出真凶,但是偏偏林队长却比较高调,他“愚笨”地几乎干扰了每个人的记忆,大刀阔斧的对这段源代码重新赋值,他渐渐发现,运算结果或者说某些人的记忆起了相应的变化。
最严重的一次是第三次穿越,他带着妹子跟踪一名乘客下车,这名乘客既然没死按理说不会在源代码构建信息源之内,下车后的行为也应该是无人可知,但由于他对这段源代码的重新赋值(跟踪),并作为一个全新的记忆去记录所见的一切,填充了乘客的行为空白。
更有趣的是,当他在跟乘客搏斗中,火车爆炸了,他并没有在第八分钟死亡,而陈娟的命运同时也被改变了。
如果不是意外被火车撞死,他甚至也不会死去回到现实世界。
这一切(以及后面更多的迹象)让后来懂得了源代码原理的他非常清楚的认识到,并非如教授所说,他不能存在于李正的8分钟记忆之外,教授的前提是李正死掉了,如果他没死呢?他认为,只要他不死,他的脑电波就可以一直在李正身上长存。
这个概念的形成在第五次返回时已经较为清晰,而在乞求女上尉给他最后一次机会时已经相当明朗了。而终止现实世界林队长的生命不是为了防止脑电波自动返回,而是为了防止教授人为手动的强行拉回。
最后,平行世界这个词严格地说是不太妥的。
应该说,每次传送,打开的都是一个全新的分岔世界。
为什么这么说呢?假设第一次穿越是在事发当天下午3点整的话,穿越到的第二个世界是早上7点40整(48分发生爆炸),3点和7点40,很明显在时间上2个世界是不平行的。
那么继续,假设第一次传送回来后立刻发动第二次传送,那么时间应该是3点08分,传送到的第三世界却仍然还是早上7点40整,显然跟第一世界不是平行的,甚至跟第二世界的时间和事件也不是平行的。
依此类推,他每一次穿越,打开的新世界都以7点40为起点,与第一世界绝对不平行,它们相互间也不完全平行,只能说是从第一世界不同的时间点分岔出去的新世界,就像他最后说的,它们都是因为不同的选择而导致的人生的不同岔路。
所以分岔世界实际上是人们在某一刻做出不同的选择时产生的全新世界,这个世界克隆了这个时间点之前的世界信息,之后则根据人的选择来自由发展。只不过通常大家只有一次选择权,而他意外的获得了多次选择的机会,而最终他选对了。影片最后他说教授他们实际上是创造的一个新世界就是这个意思了——而不是什么与既有平行世界打开通道之类或者改变历史什么的。
其实从技术名词方面来说,这部电影也挺有趣的,源代码是什么?计算机应用程序其实就是一堆二进制代码。这种二进制代码实际上是一种机器语言,能够被cpu所识别。应用程序运行时,系统将该程序的二进制代码载入内存中,然后交给cpu去识别并执行。这些二进制代码就是源代码。
进程是一个运行中的应用程序。
线程是进程中某个单一顺序的控制流。线程在进程中被创建,并且执行一定的任务,任务结束后线程终止。
线程从属于进程,一个进程可以同时包含n个线程。这n个线程在时间上是同时运行的,直到各自任务结束后终止。可以理解成高速公路上的n辆汽车,同时向前开,它们有不同的目的地,会在各自到达目的地后停下来。
从这个来解读的话,你会发现,其实真的非常形象。
首先整个世界是一个运行中的应用程序,是一个进程。我们都运行于这个进程中。
而基础是建立在一个设定上,那就是人类在死亡的时候会保留最后8分钟的记忆。电影里面的教授们认为这8分钟的记忆是“世界”这个应用程序中的一段源代码。
火车爆炸事件发生后,教授把火车上一名乘客死前8分钟的记忆(源代码)保存了下来。他的想法是,可以启动一个线程去反复执行这8分钟的代码,找到恐怖分子以避免将要在市中心发生的第二次爆炸。但是他们并没有掌握创建线程的能力,只能利用现有的线程。林队长牺牲,只剩下大脑还是活动的,这个活动的大脑就是一个线程。
而被反复启动林队长的大脑(线程),让该线程去执行那8分钟的源代码。理论上,这8分钟的源代码执行完毕后,这个线程就会终止。林队长的大脑就会从中脱离出来,回到初始状态,电影中用林队长处于一个全封闭的铁盒子中来表示这一状态。
教授的理论似乎在实际运行过程中得到了验证,因为林队长在每次任务执行8分钟后确实回到了初始状态。
然而教授错了。林队长每次在任务执行8分钟后回来的原因,并不是因为那段8分钟的源代码执行完毕了,而是因为林队长每次都死亡了,要么被炸死,要么被火车撞死,要么被恐怖分子枪杀。被火车撞死和被杀那两次,林队长是在火车爆炸后才回来的,时间长于8分钟。所以该线程不是终止于源代码执行完毕,而是终止于终止指令(林队长死亡)。
所以最后电影结束的时候,有两个世界(进程)在并行的运行,一个是原来那个世界,一个是克隆出来的新世界。
原来那个世界里,火车爆炸发生了。克隆出来的新世界,火车爆炸没有发生。”
(本章完)