[Powered by Google Translate] Nate Hardison: Ha van több program nyitja meg a
számítógép, úgy tűnik, mintha minden
fut egyszerre.
Például, lehet, hogy dolgozik a böngészőben, mint a
Firefox vagy az Internet Explorer, zenét hallgat az iTunes-on,
és az írás egy esszét a Word.
Azonban, a motorháztető alatt, a programok ténylegesen
fut egyenként.
Ez a feladat az operációs rendszer, a Windows, Mac OSX, vagy
Linux, kezelésére mindegyik különálló folyamatok, a
programok ismert, és váltani őket, hogy ha
megy ellenőrizze a Facebook oldalt, hogy a munkát a dolgozat
ismét Word az, aki fut.
>> Néha azonban szeretnénk maguk a programok, hogy képesek
csinálni több dolgot, mint ez is.
Ha Ön, mint én, akkor valószínűleg van egy csomó
különböző lapok megnyitása a webböngészőben, egy e-mail,
az egyik egy naptár, és így tovább.
Tudtuk kezelni az egyes lapokat, mint egy külön program vagy folyamat,
mint a Google Chrome nem, de a sok program használ
könnyebb súlyú változata a folyamatot nevezzük a menet.
>> Egy szál is csak egy egysége feldolgozás, egy sor
utasítások vagy kódot, amely "fuss", idézet idézőjel bezárva,
egyidejűleg más szálak.
Ez az, ami lehetővé teszi, böngészhet Facebook
hallgatása közben rám a háttérben, vagy a két
YouTube videók lejátszása egyszerre.
Szóval, ez az általános témát, nevei konkurencia, jellemzően
nem jön ki ilyen korán számítástechnika tanfolyamok
mivel az alacsonyabb szintű részletei szükséges vitát
operációs rendszerek és a hasonlók.
Azonban a programozási nyelvet használjuk a
elején CS50, Scratch rendelkezik néhány remek eszközöket
könnyebben programokat írhassanak több dolgot
folyik egyszerre.
>> Ha építeni Scratch programokat, te állandóan
dolgozó szálak.
Minden Scratch script, ami egy kód blokk kezdődő
egyik a "ha" a puzzle darabkái, lehet gondolt
mint egy külön szál.
Nézzünk egy egyszerű Scratch programot, hogy hogyan is működik ez.
>> Itt van egy hal tárgy, vagy sprite, két szkriptek
hogy mind a kezdő, amikor kattintson a kis zöld zászló gombra.
Az első script vezérli a hal mozgás.
Amikor a zöld zászló kattint, a hal kerül forgalomba
A bal oldalon a képernyő, az úgynevezett a szakasz,
jobbra néző.
Aztán egy sor utasítást, hogy akkor fut örökké, amíg nem
állítsa le a programot, a hal siklik a jobb oldalon,
megfordul, visszamegy a bal oldalon, és a
megfordul újra.
A második script vezérli a hal gondolkodási folyamat.
Kiderült, hogy ez egy éhes hal.
Így várakozás után 3 másodpercig, a hal úgy gondolja,
"Éhes vagyok", a negyedik kicsit.
Ez a szkript is fut örökké.
És mint látjuk, az a program futtatása kattintva
zöld zászlót, mind parancsfájlokat úgy tűnik, hogy végre
egyidejűleg.
A hal mozog, és úgy gondolja egyszerre.
>> Mivel a szegény halak úgy néz ki, éhes, adjunk néhány
sajtos puffasztott mert enni.
Remélhetőleg nem szétesik a vízben.
Ha ehhez hozzátesszük a második sprite, akkor is képes
Add hozzá a szkripteket, amely megfelel a sprite.
, És így nem lesz egy másik beállítás
szálak, hogy majd futni.
Ahhoz, hogy a felhasználó a program felett, amikor a
Éhes hal lesz étel, mondjuk, hogy amikor a világűr
Bár a hit, sajtos puffasztott jelennek meg a színpadon a
halat enni.
Mielőtt megüt a Space Bar, akkor szeretnénk tartani a sajtos
felfújja rejtett, hogy a halak nem látják őket.
Ehhez szükségünk lesz egy pár szkriptek a
sajtos felfújja sprite.
Az első script, a zöld zászlót, majd csak elrejti az ételt.
Ellentétben a többi szkripteket írtam, ez nem tartja
futás örökre.
Ez kezdési és befejezési nagyon gyorsan, igaza van, amikor azt gombra
a zöld zászló gombot.
>> A következő script amit már várni fog a Space Bar, hogy
préselt végrehajtása előtt.
Nevezhetjük felhasználói bemenetet vár "elérhető" vagy "hallgat"
egy esemény.
És a kód, amely végrehajtja, ha egy esemény érkezik, vagy
hallott az úgynevezett eseménykezelés kódot.
A Space Bar eseménykezelő megjelenik a sajtos felfújja a
a képernyőn, így a halak megeszik őket.
Ezen a ponton, minden néz jó.
>> A következő dolog, amit meg kell tennie, hogy kitaláljuk, hogyan lehet
a halak észre, hogy van mit ennie.
Adjunk hozzá egy másik szál a halak, hogy folyamatosan
ellenőrzés-e vagy sem ez érinti a sajtos felfújja.
Tesszük ezt egy külön téma, mivel így tudunk
folyamatosan ellenőrzi az élelmiszer.
Egyébként mi lenne tudni csak rendszeresen ellenőrizze az élelmiszer
között siklórepülés, megfordult, várakozás, vagy a gondolkodás.
>> OK.
Most fut a Scratch program.
Ahogy az várható volt, az élelmiszer azonnal elrejti és a
Éhes hal úszik oda-vissza ugyanúgy, mint azelőtt.
Amikor elérjük a szóköz, a sajtos felfújja előtérbe kerül,
és az éhes halak mondja whoo.
De várjunk csak, ez furcsa.
Hogy jön a hal "Éhes vagyok" gondolat félbeszakítja a
többi cucc?
Ez azért van, mert nem hoz létre koordinációs
a három hal szkripteket.
Minden fut a saját téma, feledékeny, amit a
mások csinálnak.
Nézzük rögzíti e mielőtt lépni.
>> Közötti koordináció szálak egy trükkös feladat, hiszen
nincs explicit felett, ha minden szál fut, vagy
nem működik.
Ha egy üzenetet az egyik szál a másikra, szükségünk lesz
hogy egy változó, tudjuk meg, vagy írjon, egy szál
és olvasd el a másik.
Hozzunk létre egy változót nevű foodFound tudjuk állítani
igaz, amikor a hal fut a sajtos felfújja.
Hát persze, azt szeretnénk, hogy győződjön meg arról, hogy mi meg azt, hogy
false kezdetben.
Ezután a hal gondolkodás szál, akkor nézze meg, ha
a halat talált étel megjelenése előtt az "éhes vagyok"
gondolta buborék.
>> Most fut újra a programot, azt látjuk, hogy a halak
nem kap szakad meg gondolatait az éhség, amikor a
sajtos puffasztott kívül esnek.
A végső probléma van az, hogy a sajtos felfújja nem megy
távol után a halat, idézem idézőjel bezárva, "megeszi" őket.
A halak szkriptek, nincs egyszerű módja annak, hogy elrejtse a sajtos
felfújja, ezért meg kell, hogy küldjön egy üzenetet a sajtos felfújja
sprite elrejteni magát.
Mi is ezt a másik változó, hogy a sajtos felfújja
sprite hozzáfér a, valamint a halak sprite.
>> Azonban van egy tisztább módon, hogy ezt a jelen esetben,
mivel ahelyett, hogy egy üzenetet küld egy script, ami
valahol a közepén a végrehajtó, akkor küldje el a
üzenetet egy script, ami arra vár, hogy elindul.
Tesszük ezt azáltal, hogy a halak sugárzott egy esemény, egy fogunk
hívja evett.
Ezután fogunk egy scriptet a sajtos felfújja, amely
várni erre az eseményre.
Ez hasonló a szóköz esemény, kivéve, hogy ez a
időt, a felhasználó nem az egy közvetlenül kiváltó esemény.
Most kell tennünk, hogy be van állítva a foodFound változót vissza
A hamis, és most már adni az éhes halak annyi
adag sajtos puffasztott ahogy akar.
>> Szóval nem rossz, ugye?
A C-ben, írásban többszálas programok bonyolultabb,
de az alapok az ugyanaz.
Különben is, remélem, hogy van egy nagy idő épület kis szórakozás
párhuzamos programok Scratch.
A nevem Nate Hardison.
Ez CS50.