[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。