Tip:
Highlight text to annotate it
X
[Powered by Google Translate] NATE哈迪森:当你有多个程序打开一个
计算机,它似乎是一切的
在同一时间运行。
例如,您可能会在Web浏览器,如
Firefox或Internet Explorer,在iTunes上听音乐,
用Word写文章。
然而,引擎盖下,该方案
在同一时间,运行一个。
这是工作的操作系统,在Windows,Mac OSX,
Linux中,每一个单独的进程管理,作为
程序是已知的,它们之间切换,所以,当你
去检查你的Facebook页面,你的文章
再次,Word是一个。
>> 但是,有时候,我们希望自己能够
做多这样的事情,太。
如果你像我一样,你可能有一堆
不同的选项卡中打开您的网页浏览器,一个用于电子邮件,
一个带有日历,等等。
我们可以把每一个标签作为一个单独的程序或进程,
像谷歌Chrome浏览器,但许多程序都使用了
重量更轻版本的过程称为一个线程。
>> 线程是另一个单位的处理,一组
指令或者程序代码,可以在“运行”,报价引文结束,
同时,其他的线程。
这是什么使得它可以为你浏览Facebook
一边听我在背景中,或有两个
YouTube视频同时播放。
所以,一般的话题,被称为并发,通常
不来这么早起来的计算机科学课程
因为较低层次的细节需要讨论
操作系统和等。
但是,我们在使用的编程语言
CS50,开始刮,提供了一些极好的工具,
可以更容易地编写程序时,多重的东西
在一次。
>> 当你建立临时的程序,你不断
工作线程。
每刮脚本,这是一个代码块,开始
“当”拼图之一的,可以被认为是
作为一个单独的线程。
让我们来看看一个简单的划痕程序,看它是如何工作的。
>> 在这里,我们已经得到了一条鱼的物体,或精灵,有两个脚本
都开始当我们点击绿色的小国旗按钮。
第一个脚本控制的鱼类的议案。
当绿旗后,鱼被放入
在屏幕的左侧,称为阶段,
朝向右侧。
然后,在一组指令,将永远运行下去,直到我们
停止该程序,的鱼滑行到右侧,
转了一圈,又回到的左侧,
再转身。
第二个脚本控制鱼的思维过程。
事实证明,这是一个饥饿的鱼。
因此,等待3秒后,鱼会认为,
“我饿了,”四分之一秒。
这个脚本也将永远运行下去。
正如我们所看到,运行该程序通过点击
绿色标志,这两个脚本执行
同时进行。
鱼移动,并认为在相同的时间。
>> 由于穷人的鱼看起来太饿了,让我们添加一些
俊俏的泡芙吃。
希望它们不会在水中崩解。
当我们在第二个精灵,我们还可以
添加脚本,雪碧。
,因此,可以通过另一组
将运行的线程的。
为了让我们的计划控制的用户时,
饥饿的鱼得到的食物,让我们说,只要空间
酒吧被击中,干酪泡芙出现在舞台上的
鱼可吃。
在我们按下空格键,我们将要保留的俗气
喷隐藏,使鱼无法看到它们。
要做到这一点,我们需要一对夫妇的脚本
俗气喷精灵。
第一个脚本,绿色标志,只是隐藏的食物。
不同于其他脚本,我们已经写了,这一次将不会保留
运行下去。
它非常迅速地开始和结束,权当我们点击
绿色环保标志的按钮。
>> 我们将等待下一个脚本的空间酒吧
压,然后再执行。
我们可以通过调用等待用户输入的“等待”或“监听”
一个事件。
而当接收到一个事件或执行的代码
听说是被称为事件处理代码。
我们的空间酒吧事件处理程序将显示俗气喷
在屏幕上,使鱼可以吃。
在这一点上,一切都看起来很不错。
>> 接下来的事情,我们需要做的是要弄清楚如何获得
认识到,有食物吃的鱼。
让我们添加另一个线程来的鱼不断
检查是否接触俗气喷。
我们这样做,因为这样我们就可以在一个单独的线程
经常检查食品。
否则,我们就只能够定期检查食品
之间滑翔,转身,等待,或思考。
>> OK。
现在,让我们从头程序的运行。
正如所料,食品立即隐藏和
饥饿的鱼游,来回像以前一样。
当我们按下空格键,映入眼帘的俗气喷,
饥饿的鱼说:哇。
但是别急,这是怪异的。
怎么来的鱼的“我饿了”的思想中断
其他的东西?
这是因为我们没有建立任何协调
之间的鱼类脚本。
每个运行在它自己的线程中,忘却什么
别人在做什么。
让我们来解决这个问题之前,我们前进。
>> 线程之间的协调是一个棘手的任务,因为我们
没有明确的控制,每个线程运行时或
不运行。
从一个线程发送消息到另一个,我们需要
在一个线程中使用一个变量,我们可以设置,或写,
和读取在其他。
让我们创建一个变量称为foodFound的,我们可以设置
真正运行时,鱼到俗气喷。
好了,当然,我们要确保,我们将它设置为
假最初。
然后,在鱼的思想线程的,我们将检查,看看是否
鱼食品后,才显示“我饿了”
认为泡沫。
>> 现在,再次运行程序,我们看到的鱼
不被打断的想法饥饿时,
俗气喷都出来了。
我们的最后一个问题是,不俗气喷
离开后,鱼,报价引文结束,“吃”。
从鱼的脚本,有没有简单的方法来隐藏的俗气
泡芙,所以我们需要将消息发送到的俗气喷
精灵可以隐藏自身。
我们可以做到这一点与另一个变量的俗气喷
子画面有访问,以及鱼的子画面。
>> 然而,在这种情况下,一个干净的方式来做到这一点,
,自而不是将消息发送到一个脚本,
在执行的中间的某个地方,我们可以发送
消息发送到一个脚本,等待开始。
我们做到这一点的鱼事件,我们将播出
呼叫吃掉了。
然后,我们将创建一个脚本的俗气泡芙,
等待此事件。
这是一个类似的空格键事件,除了这个
时间后,用户不是一个直接触发事件。
现在我们要做的是设置我们的foodFound的变量回
为false,我们现在可以给许多饥饿的鱼
份俗气喷,因为它要。
>> 所以不要太糟糕了,对不对?
在C语言中,编写多线程程序是比较复杂的,
但基本是相同的。
无论如何,我希望你有一个伟大的时间来建立一些有趣的
在Scratch的并发程序。
我的名字是Nate哈迪森。
这是CS50。