[Powered by Google Translate] Nate HARDISON: Þegar þú hefur fengið mörg forrit opin á a tölva, það virðast eins og er allt í gangi á sama tíma. Til dæmis, þú gætir verið að vinna í a vefur flettitæki eins og Firefox eða Internet Explorer, hlusta á tónlist í iTunes, og að skrifa ritgerð með Word. En undir hetta, forrit í raun hlaupa einn í einu. Það er hlutverk stýrikerfi, Windows, Mac OSX eða Linux, að stjórna öllum þessum aðskildum ferli, sem forrit eru þekkt, og skipta á milli þeirra þannig að þegar þú fara frá stöðva Facebook síðuna þína til að vinna á ritgerðinni þinni aftur, Word er sá sem er í gangi. Stundum, þó, við viljum forrit sig til að geta að gera marga hluti eins og þetta líka. Ef þú ert eins og mig, þú hefur sennilega fullt af mismunandi flipa opna í vafranum, einn fyrir tölvupóst, einn með dagbók, og svo framvegis. Við gætum við hverjum flipa sem sérstakt forrit eða aðferð, eins og Google Chrome gerir, en mörg forrit nota léttari-þyngd útgáfa af ferli kallast þráð. A þráður er bara annað eining vinnslu, að setja af leiðbeiningar eða kóða sem hægt er að "keyra", vitna unquote, samhliða öðrum þráðum. Þetta er það sem gerir það mögulegt fyrir þig að skoða Facebook en hlusta á mig í bakgrunni eða til að hafa tvo YouTube myndbönd spila á sama tíma. Svo þetta almenna atriði, þekktur sem concurrency, oftast ekki koma upp svona snemma í tölvunarfræði námskeið því lægra stigi upplýsingar þurfa umfjöllun um stýrikerfi og þess háttar. Hins vegar forritunarmál við notkun við ársbyrjun CS50, Scratch afla, sumir nifty tól til að gera það auðveldara að skrifa forrit með mörgum hlutum gangi í einu. Þegar þú byggir upp grunni forrit, þú ert stöðugt vinna með þræði. Hver Scratch handrit, sem er kóðinn blokk sem hefst með einn af "þegar" þraut stykki, hægt er að hugsa sér sem sér þráð. Við skulum líta á einfalt Scratch forrit til að sjá hvernig þetta virkar. Hér höfum við fengið fisk hlut eða Sprite, með tveimur forskriftir að bæði byrja þegar við smellur the lítill græna fána hnappinn. Fyrsta handrit stjórna hreyfingu fiskurinn er. Þegar græna fáninn er smellt fær fiskurinn settur á vinstri hlið af the skjár, sem heitir svið snúa til hægri. Þá, í safn skipana sem mun keyra að eilífu, þangað til við stöðva program, fiskurinn glides á hægri hlið, snýr sér við, fer aftur til vinstri, og snýr sér aftur. Annað handrit stjórna hugsun aðferð fiskurinn er. Það kemur í ljós að þetta er svöng fiskur. Svo eftir að bíða í 3 sekúndur, fiskur verður að hugsa, "Ég er svöng," fyrir fjórða sekúndu. Þetta handrit rekur eilífu. Og eins og við sjáum, að keyra forritið með því að smella á græna fána birtast bæði skriftum að framkvæma samtímis. Fiskurinn fer og hugsar á sama tíma. Þar sem fátækur fiskur lítur svo svöng, við skulum bæta við í sumum cheesy Puffs fyrir það að borða. Vonandi munu þeir ekki sundrast í vatni. Þegar við bætum í öðru Sprite, munum við einnig að vera fær um að bæta við í skrifta svarar þeirri Sprite. Og þess vegna, það verður annað sett af þræði sem mun keyra. Til að gefa notandanum á stjórn áætlun okkar yfir þegar svangur fiskur fær mat, segja skulum að þegar Space Bar er högg, virðast cheesy Puffs á sviðinu fyrir fiskur að borða. Áður en við högg the Space Bar, munum við viljum halda cheesy Puffs falin þannig að fiskurinn getur ekki séð þá. Til að gera þetta þurfum við að fá nokkra forskriftir fyrir cheesy Puffs Sprite. Fyrsta handrit, græna fána, mun bara fela matinn. Ólíkt öðrum skriftum við höfum skrifað, þetta mun ekki halda keyra að eilífu. Það verður að byrja og ljúka mjög fljótlega, rétt þegar við smellur græna fána hnappinn. Næsta handrit sem við höfum mun bíða fyrir Space Bar til að vera þrýsta áður en framkvæmd. Við getum hringt í að bíða eftir notandi inntak "bíða" eða "hlusta" fyrir atburð. Og kóða sem keyrir þegar atriði er móttekin eða heyrt er kallað atburður meðhöndlun kóða. Space Bar okkar atburður dýraþjálfari mun sýna cheesy úða á á skjánum þannig að fiskurinn getur borðað þá. Á þessum tímapunkti, allt er útlit gott. The næstur hlutur sem við þurfum að gera er að reikna út hvernig á að fá fiskur að átta sig á að það er matur að borða. Við skulum bæta við öðru þráður í fiski sem stöðugt tékka hvort það er snerta cheesy úða. Við gerum þetta í sér þráð þar Þannig að við getum stöðugt stöðva fyrir mat. Annars viljum við bara vera fær um að athuga reglulega til matar á milli svifflug, snúa við, bið, eða hugsa. OK. Nú skulum hlaupa Scratch kerfi okkar. Eins og vænta, maturinn felur strax og svangur fiskur syndir fram og til baka rétt eins og áður. Þegar við högg the rúm bar, koma cheesy Puffs í augsýn, og hungraður fiskur segir whoo. En bíddu, það er skrýtið. Hvernig koma fiskurinn er "ég er svöng" hugsaði truflar önnur efni? Þetta er vegna þess að við ekki setja neina samhæfingu milli þriggja fisk forskriftir. Hver er í gangi í eigin þráð þess, sem vissu ekkert hvað aðrir eru að gera. Við skulum laga þetta áður en við fara. Samræming milli þræði er erfiður verkefni þar sem að við ekki skýr stjórn á því hvenær hver þráður rekur eða ekki hlaupa. Til að senda skilaboð frá einum þráð til annars, þurfum við að fá að nota breytu sem við getum sett, eða skrifa, á einum þræði og lesa í öðrum. Við skulum búa til breytu sem heitir foodFound sem við getum stillt við þegar fiskurinn liggur í cheesy puffs. Jæja, auðvitað viljum við að tryggja að við að setja hann FALSE upphafi. Þá, í þræði hugsun fiskurinn er, munum við athuga hvort fiskurinn hefur fundið mat áður sýna "Ég er svöng" hugsun kúla. Nú keyra forritið aftur, sjáum við að fiskurinn ekki fá rofin með hugsanir hungri þegar cheesy skammtar eru út. Endanleg Vandamálið sem við höfum er að cheesy Puffs ekki fara burtu eftir fiskinn, vitna unquote, "borðar" þá. Frá fiski forskriftir, það er engin auðveld leið til að fela cheesy skammtar, þannig að við þurfum að senda skilaboð til cheesy puffs Sprite til að fela sig. Við gætum gert þetta með annarri breytu að cheesy Puffs Sprite hefur aðgang að, sem og fiskur Sprite. Hins vegar, það er hreinni leið til að gera þetta í þessu tilviki, þar sem í stað þess að senda skilaboð til handrit sem er einhvers staðar í miðri framkvæmd, getum við sent á skilaboð til handrit sem er að bíða eftir að byrja. Við gerum þetta með því að hafa fisk útvarpsþáttur atburði, sem við munum kalla borðað. Þá munum við búa til handrit fyrir cheesy puffs sem mun bíða eftir þessum atburði. Þetta er svipað og að Bar Space atburður, nema að þetta tíma, sem notandinn er ekki einn beint kveiki á atburðinn. Nú allt sem við þurfum að gera er að setja foodFound breyta aftur okkar að rangar, og getum við nú gefið svangur fiskur eins og margir skammta af cheesy puffs eins og það vill. Svo ekki of slæmt, ekki satt? Í C, skrifa multi-snittari forrit er flóknara, en grunnatriði eru þau sömu. Engu að síður, ég vona að þú hafa a mikill tími að byggja gaman samhliða forrit í grunni. Ég heiti Nate Hardison. Þetta er CS50.