该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
看了电影,看的时候比较茫然,回来合计一晚上,还是用电影本身的名字source code来理解整个电影比较顺当,当然这里有些对计算机的理解也是不准确不专业的。
总论:整个宇宙可以看做一个运行中的超级计算机,其中有多个平行世界,对应着计算机正在同时运行的多个进程。每个人生都可以看做一个线程,而每个线程需要有其自己的源代码才得以运行,人的死亡可以看做一个线程的终止。
1,8分钟的记忆
博士找到了肖恩临死前8分钟的记忆,这8分钟的记忆可以看做是肖恩的这个线程被终止前的一部分源代码,而博士找到了肖恩临死前8分钟时肖恩这个生命的线程正在运行其代码的位置。
2,如何让上尉进入到那8分钟
博士找到肖恩代码位置,在其方法中改变代码使其调用上尉的代码,在另一个进程中重新运行这个程序。而另一个进程就成为了另一个完全不同的世界。当然博士与其他所有人的未变更的代码也在另一个程序中运行着。
3,如何返回现实上尉进程
博士并没有设置上尉源代码中的返回指令,但他知道只要肖恩的生命线程被终止,调用自然会返回。如果肖恩不死,那么上尉会永远在肖恩的生命线程中继续运行。
4,为什么只有上尉可以回到那8分钟
别人的代码不兼容,上尉的变量和方法设置比较大众化。
5,为什么返回时会有闪现的画面,画面中有那个铁球和那个女主角?
计算机里的缓存提供了提前读的功能,杀死一个线程后,不用的缓存需要清空。而缓存存储的代码可以理解为可用的未来的代码,即可能的现实与人们的期望的**。上尉的线程被杀死后,回到现实过程中看到的画面是缓存被迅速清空的过程的片段。
6,最后的接吻,为何会停止?
线程的并行:在一段时间内处理多个线程。但从微观上看,进程在短时间片内是交替运行的。因为处理器并不能同时处理调用同一段代码与数据的两个进程,这样会产生错误。
也就是说,上尉的线程同时被俩个进程调用时,两个进程也同样不能同时运行。也就是博士与肖恩在不同的两个进程交替运行,各运行了8分钟,而由于切换时用堆栈存储不同进程的信息,故虽然两个世界的进程是交替运行的但人的记忆是连续的。故系统在切换到**关闭上尉电源的瞬间,肖恩的世界是静止的,这才是两个世界真实的状态。
7,上尉如何在肖恩的世界活下去?
**关闭电源,其实是关闭了上尉原来的世界与对上尉代码的调用,而这个代码仍然在肖恩的另一个进程世界中运行,无法被强制删除掉。所以上尉的代码在肖恩的线程中继续活下去,但他的外表永远定格为肖恩了。
8,肖恩的世界中的已经死掉的上尉怎么处理?
没法处理,肖恩的世界保留了他世界中原有已经死亡的上尉的代码而且还有其调用来的另一个进程世界中的上尉的代码,两个代码都将继续运行。
暂时想到的,还有补充问题么?