Das Video kommt von YouTube: erst beim Abspielen verbindet sich die Seite mit YouTube (Google).
C-Programmierung – Producer-Consumer
Das Wichtigste aus dem Video
Tipp auf eine Zeit – das Video springt genau dorthin.
Transkriptautomatisch erstellt · 67 Zeilen
- wofür benötigt dieser fokus süchtigen arge hier konnte ich nur bewerben [Musik] heute geht es um charlie unseren kleinen
- schoko elite nager falls euch bekannt vorkommen sollte er war bereits ein statist in mehreren meiner videos kommunikation und er steht insbesondere
- auf duplo davon kann er irgendwie einfach nicht genug bekommen zum glück hat er einen großen bruder nämlich niklas und der versorgt ihn
- immer mit neuen duclos an immer scheint nun wieder sein blog gegessen hat dann ist der teller natürlich leer und erwartet wieder auf niklas jetzt ist es
- allerdings so dass charlie zwar ein extrem um die regionale ist aber er möchte trotzdem nicht ständig hier schauen haye ist da schon etwas ist ja
- schon etwas ist ja schon etwas was macht man doch nur wenn man frisch verliebt ist und auf eine nachricht des partners wartet sondern er möchte sich in
- stattdessen ganz entspannt hinlegen und darauf warten dass in die class ein signal gibt wenn es da wieder etwas zu holen gibt das heißt so bald nix hier
- etwas hingelegt hat wieder für ihn ein neues logo für charlie bereitgestellt hat dann möchte er dass im nieders eine nachricht gibt darauf es gibt wieder was
- sollen diesmal sogar seine lieblingsorte die weißen woher kennen wir das problem was wir hier haben ist ein klassisches wie user kannst ja mal problem wir haben
- einen die user niklas er darauf warten muss dass dieser gemeinsame bereich frei ist damit er etwas hier hinlegen kann und wir haben einen consumer charlie der
- darauf wartet dass hier etwas zu holen ist wir nehmen der einfachheit halber an das ausschließlich ein duplo gleichzeitig ihr platz hat
- den hole ich mir doch gleich das heißt nicht dass es sofort essen muss aber hat sich in zumindest einmal geschnappt damit sofort für nachschub gesorgt
- werden kann die user niklas kann nur etwas hier hinlegen wenn quasi hier nichts ist und dann gibt er bescheid an den consumer
- angeli wer es dann sofort wieder abholen kann charlie wiederum gibt ein signal an niklas hater teller ist er wie er sich
- möchte wieder bitte etwas nachschub und dann gibt es eventuell wieder etwas vom regisseur von niklas in diesem fall ein cocos erscheint das pro user consumer
- problem ist jetzt natürlich nicht nur auf einen pro user oder einen kanzler beschränkt wir können auch auf jeder seite mehrere verwenden wir könnten
- sagen auch urlaub möchte etwas und auch schon glück möchte auch noch etwas davon haben dann würde das an der grundsätzlichen fragestellungen nichts
- ändern einzige unterschied ist dass jetzt 30 dieselbe schoko teilen müssten nur einer der drei kann sich diese schoko schnappen zum beispiel könnte ist
- dass in diesem fall zurück sein und der würde dann ein signal an nicos geben hey wir brauchen nachschub es kann wieder etwas neues hinlegen und in diesem fall
- sagen wir bekommt die benachrichtigung um olaf und urlaub kann sich hier schnappen und schickt seinerseits dann natürlich wieder eine benachrichtigung
- an niklas bitte teller ist leer wir brauchen wieder etwas wie kann man dieses video the consumer problem nun mit condition variablen in der
- programmiersprache c lösen haben wir schon sein wir verwenden hier zwei threads als ein producer ein consumer also niklas und
- charly damit der pro user damit nichts aus überhaupt erst einmal eine schoko hergehen kann muss sie erst einmal sorgen
- charlie hat es einfacher er bekommt hier ein duplo zusätzlich brauchen wir die zustands information für diesen gescherten bereich da haben wir zum
- einen eine bullische variable ist chocolate on trade das heißt wir merken uns ist überhaupt der zeit etwas drauf ist der teller bereits gefüllt und
- natürlich haben wir die tatsächliche schoko auch noch darauf also das was wir eigentlich übergeben möchten wenn wir mit condition variablen arbeiten
- brauchen wir immer einen judex für den zugriff auf den gemeinsamen bereich und hier beim producer consumer problem benötigen wir weiters zwei condition
- variablen zum einen die condition dies signalisiert eben das kartell voll ist das also etwas abgeholt werden kann weiters haben wir die condition mt damit
- signalisiert charlie an niklas also der consumer an dem preview sah dass der teller leer ist und bitteschön etwas nachzufüllen sei im hauptprogramm werden
- diese tags und die condition variable initialisiert und anschließend starten wir die beiden frames der eine führt den code für niklas aus für den producer und
- der zweite für den code für den casino für charlie aus wir dürfen natürlich nicht vergessen bei beendung des programms vorher diese condition
- variablen wieder zu zerstören ebenso wie diese tags was genau macht nun der producer was genau macht niklas die eigentliche produktion erfolgt immer
- außerhalb des kritischen bereichs wenn die kritische bereich soll wie wir wissen ja möglichst kurz sein damit wir möglichst viel an neben läufigkeit
- erreichen können anschließend locken wir die mit ex das heißt wir möchten nun auf diesen gemeinsamen bereich zu greifen dann prüfen wir erst einmal ab
- ist der teller überhaupt leer also so lange der tiger noch befüllt ist also weil dies zu klettern plate solange das der fall ist möchten wir hiermit dieser
- condition variable auf diese komischen variable warten das heißt wir rufen hier peapod konkret auf und sagen wir wollen auf die
- variable condition and i warten das heißt wir warten auf ein signal dass der teller nun leer ist hierüber geben wir auch immer die nude
- ex warum ist das so naja wir müssen im unix besitzen damit wir überhaupt in diesen gemeinsame bereich rein dürfen aber wenn wir warten
- dann wird hier automatisch die simyo ticks wieder freigegeben wäre das nicht der fall dann könnte in der zwischenzeit niemand etwas vom
- teller unternehmen weil wir ja die semiotik blockieren und sobald dieses condition welt zurückkehrt also bald ist ein signal bekommt dann holte sich diese
- musics wieder als es lockt diese musics wieder hier unbedingt immer darauf achten dass sie ein weil verwendet kein normales eve warum ist das nötig es
- könnte zu sogenannten spear ihres make-ups kommen darunter versteht man dass ein brett aufgeweckt wird aber die bedingung trotzdem vielleicht nicht oder
- nicht mehr erfüllt ist es könnte sein dass wir mehrere producer haben und ein anderer producer uns bereits zuvor gekommen ist und der teller somit schon
- wieder gefüllt ist das heißt in diesem fall müssten wir sofort wieder paid content aufrufen und wieder warten jetzt sind ja englischen kritischen bereich
- und wir können loslegen hier machen wir wirklich nur das absolut nötigste auf diesem teller legen wir quasi die schoko ab und wir setzen dann
- noch das flag dass dieser teller nun gefüllt ist dann senden wir mit pete conway ein signal wohin naja an diese condition vollvariable denn wir möchten
- er signalisieren jetzt ist der teller voll und danach geben wir auch schon wieder diese newtec frei wie sie das ganze jetzt für den kummer also für
- charlie aus eigentlich ziemlich identisch sobald die erst einmal dem producer programmiert habt ist der kann so einfach denn ihr
- müsst einfach nur eine kopie davon anfertigen und die logik entsprechend umkehren also im gegensatz zu vorher wo wir sagten weil ist jack white und plate
- interessiert ihn natürlich wann ist quasi dieser teller voll noch nichts da ist dann muss erwarten erwartet natürlich auf conditions sobald wir dann
- hier wieder im kritischen bereich sind machen wir im prinzip genau das gegenteil vom producer nämlich wir holen uns diese schokolade vom teller und wir
- sagen natürlich der teller ist nun leer anschließend nie wieder ein signal in diesem fall denken wir natürlich condition mt denn wir möchten ja nix
- signalisieren also dem producer signalisieren es ist nichts mehr da bitte nachschub und erst wenn wir diese im unix freigegeben haben erst dann
- machen wir den zeitaufwändigen teil nämlich in diesem fall ist es so bleibt dann finden wir das doch gleich mal aus
- wir sehen sobald hier quasi diese giving chocolate zeile auftaucht folgt unmittelbar auch diese eating zeile das heißt unabhängig davon wie lange quasi
- niklas benötigt um eine neue schokolade zu besorgen charlie bekommt sofort die notification und kann unmittelbar reagieren das können wir uns auch
- vielleicht in einer zweiten shell ansehen wie viel cpu das überhaupt benötigt 0,0 also praktisch gar nichts in diesem zeitraum zwischen diesen
- zeilen der konsum macht in diesem zeitraum nichts denn erwartet nur auf dieses signal und bisher diese signale bekommt kann er sich im prinzip schlafen
- legen und das ist ja genau das was wir wollen wir möchten keine cpu zeit sinnlos verheizt
- die spannende frage ist jetzt natürlich wie sieht es aus wenn ich nicht nur und nur einen kanzler habe sondern wenn ich mehrere davon habe also wenn es
- nicht nur charlie gibt sondern auch noch urlaub und auch noch jean-luc das schöne daran ist es ändert sich eigentlich fast gar nichts im kot es gibt hier
- eigentlich nur zwei stellen wo wir etwas ändern müssen das eine ist hier die anzahl der fritz erhöhen also die höhen hier vier fritz ein producer drei
- consumer und diese müssen natürlich auch gestartet werden das machen wir am besten in einer schleife damit wären dann allerdings unsere
- consumer ein wenig unterscheiden können geben wir hier in eat dog let zusätzlich noch die freddy aus
- kontrollieren das wieder und wir sehen nun dieser frist ein anderer consumer als dieser hier als diese hier wichtig mehr als einen pro user haben ist es
- genau dasselbe wir sehen also dass pro user consumer problem lässt sich mit konditions variablen sehr sehr einfach lösen
- vielen dank fürs zuschauen viel erfolg pickering und [Musik]
Zum Nachlesen
Erzeuger-Verbraucher-ProblemDas Erzeuger-Verbraucher-Problem (englisch producer–consumer problem, PCP) ist eine klassische, abstrakt formulierte Problemstellung der Prozesssynchronisation.
ProzesssynchronisationGemeinsamer Zugriff auf Daten. Dabei muss verhindert werden, dass durch gleichzeitigen Zugriff Inkonsistenzen in den Daten entstehen. Dies wird durch Mutex- …
Monitor (Informatik)Erzeuger/Verbraucher-Problem), in denen ein Prozess während der Ausführung einer Monitor-Operation feststellt, dass die Datenstruktur sich in einem Zustand …
SpinlockEs ist eine Sperre (Lock) zum Schutz einer gemeinsam genutzten Ressource durch konkurrierende Prozesse bzw. Threads (siehe Kritischer Abschnitt) nach dem …