[Powered by Google Translate] Nate HARDISON: Kur keni programe të shumta të hapur në një
kompjuter, kjo duket si çdo gjë e
drejtimin në të njëjtën kohë.
Për shembull, ju mund të punojnë në një shfletues web si
Firefox ose Internet Explorer, duke dëgjuar muzikë në iTunes,
dhe shkruar një ese me Word.
Megjithatë, nën kapuç, programet të vërtetë
drejtuar një në një kohë.
Ajo është punë i sistemit operativ, Windows, Mac OSX, ose
Linux, për të menaxhuar secili prej këtyre proceseve të veçanta, si
Programet janë të njohura, dhe kaloni mes tyre në mënyrë që kur ju
shkojnë nga Facebook kontrolluar faqen tuaj për të punuar në esenë tuaj
përsëri, Fjala është ai që është running.
>> Ndonjëherë, edhe pse, ne duam programe veten të jetë në gjendje
për të bërë gjëra të shumta si kjo, too.
Nëse ju jeni si unë, ju ndoshta keni një bandë e
tabs të ndryshme të hapur në shfletuesin tuaj të internetit, një për e-mail,
një me një kalendar, dhe kështu në.
Ne mund të trajtojnë çdo skedë si një program të veçantë apo proces,
si Google Chrome bën, por shumë programe të përdorni një
lehta-peshë version i një procesi të quajtur një fije.
>> Një fije është vetëm një tjetër njësi e përpunimit, një grup i
udhëzime ose kod që mund të "drejtuar", mbyll thonjëzat quote,
njëkohësisht me temat tjera.
Kjo është ajo që e bën të mundur që ju të shfletoni Facebook
ndërsa duke dëgjuar për mua në sfond, ose të ketë dy
YouTube videos luajtur në të njëjtën kohë.
Pra, kjo temë e përgjithshme, e njohur si konkurrencën, në mënyrë tipike
nuk dalë kaq herët në kurset e shkencave kompjuterike
sepse të ulët të nivelit detaje kërkojnë diskutimin e
sistemeve operative dhe si.
Mirëpo, gjuha e programimit ne përdorim në të
fillimi i CS50, Scratch, ofron disa mjete të mrekullueshëm
bëjë më të lehtë për të shkruar programet me gjëra të shumta
ndodh në të njëjtën kohë.
>> Kur ju të ndërtuar programe zeroja, ju jeni vazhdimisht
punuar me temat.
Çdo dorëshkrim Zeroja, e cila është një bllok kod që fillon me
një nga "kur" copa mister, mund të mendohet
si një fije të veçantë.
Le të shikojmë në një program të thjeshtë për të zeroja parë se si kjo funksionon.
>> Këtu, ne kemi marrë një objekt peshk, ose Sprite, me dy Scripts
që të dy të fillojë kur ne të klikoni butonin e gjelbër pak flamur.
Script pari kontrollon mocionin e peshkut.
Kur flamuri gjelbër është klikuar, peshku merr vendosur
në anën e majtë të ekranit, të quajtur fazë,
përballet në të djathtë.
Pastaj, në një sërë udhëzimeve që do të kandidojë përgjithmonë, deri ne
të ndaluar programin, peshku glides në anën e djathtë,
kthehet rreth, shkon prapa në anën e majtë, dhe
kthehet rreth përsëri.
Script dytë kontrollon procesin e peshkut menduar.
Ajo rezulton se ky është një peshk i uritur.
Pra, pas pritjes për 3 sekonda, peshku do të mendojnë,
"Unë jam i uritur," për një sekondë të katërt.
Ky skenar edhe shkon përgjithmonë.
Dhe si ne e shohim, nga drejtimin e programit duke klikuar
flamuri gjelbër, të dyja Scripts duket për të ekzekutuar
në të njëjtën kohë.
Peshku lëviz dhe mendon në të njëjtën kohë.
>> Që peshku varfërve duket aq e uritur, le të shtoni në disa
puffs Grin për atë për të ngrënë.
Shpresojmë se ata nuk do të shpërbëhen në ujë.
Kur ne të shtoni në një Sprite dytë, ne gjithashtu do të jetë në gjendje të
shtoni në Scripts korrespondojnë me atë Sprite.
Dhe, kështu, nuk do të jetë një tjetër grup i
temat që do të kandidojë.
Për të dhënë përdoruesit e programit mbi kontrollin tonë kur
peshku i uritur merr ushqim, le të themi se kurdo Space
Bar është goditur, puffs Grin shfaqet në skenë për
peshk për të ngrënë.
Para se të goditur Bar Hapësirë, ne do të duan të mbajnë dobët
puffs fshehur në mënyrë që peshku nuk mund të shohin ato.
Për ta bërë këtë, ne do të duhet një çift të Scripts per
puffs Grin Sprite.
Script parë, flamuri gjelbër, thjesht do të fshehin ushqimin.
Ndryshe nga Scripts tjera kemi shkruar, kjo nuk do të mbajë
running përgjithmonë.
Ajo do të fillojë dhe të përfundojë shumë shpejt, right click, kur ne
butonin e gjelbër flamuri.
>> Script ardhshëm ne kemi do të presim për Bar Hapësirë ​​për të
presion përpara ekzekutimit.
Ne mund të telefononi duke pritur për të dhëna përdoruesi "pritjes" ose "dëgjuar"
për një ngjarje.
Dhe kodin që ekzekuton kur një ngjarje është marrë ose
dëgjuar quhet trajtimin ngjarje Kodi.
Bar ynë Hapësirë ​​ngjarje mbajtës do të tregojë puffs Grin në
ekran në mënyrë që peshku mund të hani ato.
Në këtë pikë, gjithçka është në kërkim të mira.
>> Gjë tjetër që ne duhet të bëni është që të kuptoj se si për të marrë
peshk të kuptojë se nuk ka ushqim për të ngrënë.
Le të shtoni një tjetër fije të peshkut që vazhdimisht
kontrollon nëse është apo nuk është prekur puffs Grin.
Ne e bëjmë këtë në një fije të veçantë që këtë mënyrë ne mund
kontrolluar vazhdimisht për ushqim.
Përndryshe, ne do të jetë vetëm në gjendje për të kontrolluar në mënyrë periodike për ushqim
në mes rrëshqitje, duke e kthyer rreth, duke pritur, ose të menduarit.
>> OK.
Tani le të drejtuar programin tonë para.
Siç pritej, ushqim menjëherë fsheh dhe
peshku uritur noton mbrapa dhe me radhë ashtu si më parë.
Kur ne goditi space bar, të puffs Grin vijnë në pamje,
dhe peshku uritur thotë Whoo.
Por prisni, kjo është e pazakontë.
Si të vijë i peshkut "Unë jam i uritur" ndërpret menduar
sende të tjera?
Kjo është për shkak se ne nuk kemi krijuar asnjë koordinim
midis tre Scripts peshkut.
Secili po kandidon në fije të vet, të pavëmendshëm ndaj çfarë
të tjerët janë duke bërë.
Le të rregullojmë këtë përpara se të lëvizë.
>> Koordinimi mes temat është një detyrë e ndërlikuar që ne
nuk kanë kontroll të qartë mbi kur secili thread shkon ose
nuk të kandidojë.
Për të dërguar një mesazh nga një fije në një tjetër, ne do të duhet
për të përdorur një variabël që ne mund të vendosni, ose shkruani në një fije
dhe lexuar në tjetrin.
Le të krijojnë një foodFound ndryshueshme quajtur që ne mund të vendosni për të
vërtetë kur peshku shkon në puffs djathë.
Well, natyrisht, ne duam të sigurohemi që ne kemi vendosur atë në
rreme fillimisht.
Pastaj, në fije të peshkut të menduarit, ne do të kontrolloni për të parë nëse
peshku ka gjetur ushqim para se të shfaqen "Unë jam i uritur"
menduar flluskë.
>> Tani, drejtimin e programit përsëri, ne shohim se peshku
nuk merrni ndërprerë me mendimet e urisë, kur
puffs Grin janë jashtë.
Problemi i fundit që kemi është se puffs Grin nuk shkojnë
larg pas peshkut, të japin kuotën e mbyll thonjëzat, "ha" ato.
Nga Scripts peshkut, nuk ka asnjë mënyrë e lehtë për të fshehur të dobët
puffs, kështu që ne duhet të dërgoni një mesazh në puffs djathë
sprite për të fshehur vetveten.
Ne mund të bëjmë këtë me një ndryshore tjetër se puffs Grin
sprite ka qasje në, si dhe Sprite peshk.
>> Megjithatë, ka një mënyrë të pastër për të bërë këtë në këtë rast,
që në vend të dërguar një mesazh për një skenar që është
diku në mes të ekzekutimit, ne mund të dërgoni
Mesazhi për një skenar që është duke pritur për të filluar.
Ne e bëjmë këtë duke pasur peshk transmetuar një ngjarje, një ne do të
telefononi ngrënë.
Pastaj, ne do të krijojë një skenar për puffs djathë që do të
prisni për këtë ngjarje.
Kjo është e ngjashme me ngjarjen bar hapësirë, përveç se kjo
kohë, përdoruesit nuk është një mënyrë të drejtpërdrejtë duke shkaktuar ngjarjen.
Tani të gjithë ne duhet të bëni është vendosur prapa foodFound tonë ndryshueshme
të rreme, dhe ne tani mund të japë sa më shumë peshk i uritur
servings e puffs djathë si ajo dëshiron.
>> Pra, jo shumë e keqe, apo jo?
Në C, duke shkruar multi-filetuara programeve është më e komplikuar,
por bazat janë të njëjta.
Gjithsesi, unë shpresoj se ju keni një kohë të madhe ndërtimin e disa fun
programe në harmoni në para.
Emri im është Nate Hardison.
Kjo është CS50.