Not logged in. · Lost password · Register

Page:  previous  1  2 
Ford Prefect
Pangalaktischer- Donnergurgler-Trinker
(Administrator)
Avatar
Member since Oct 2002
3298 posts
Robert: Irgendwie hab ich deine Frage jetzt nicht so richtig verstanden ;)

Das Terminal liefert stdin erst ab, wenn man die Zeile z.B. mit Enter quittiert hat. Dann aber vollständig (Zeichen für Zeichen)...
Quote: <mute> mit Miranda macht irc kein spass :P <Loki|muh> dann geh doch wieder :)
<mute> ich benutze kein miranda <Loki|muh> na und? :)
Steppenwolf
Schläfer
Avatar
Member since Nov 2002
1535 posts
zum erzeuger:

dieser soll bei einem EOF warten, bis der verbraucher alle zeichen aus dem puffer gelesen hat und ihm erst dann ein sigpipe schicken. wie implementiere ich dieses warten?
aktives warten ist ja nicht sinn der sache...
leonidas
Avatar
Member since May 2003
298 posts
Also ich denke aktives warten ist diesem Fall nicht so schlimm, weil das ist ja eigentlich nur eine "Ausnahme"....

Ansonsten müsste man noch eine zusätzliche Semaphore einführen, oder?
Nothing's real until you feel
Steppenwolf
Schläfer
Avatar
Member since Nov 2002
1535 posts
In reply to post ID 11274
Quote by frahi on 2004-01-18, 17:53:
Das mit dem krit. Bereich verbind ich immer mit einer binaeren P/V Sem. die alleine ist nicht der Weisheit letzter Schluss, schlieslich gibts hier 2 Synchronisationsprobleme (Schreiber darf nicht Leser ueberholen und umgekehrt) also muss es auch 2 Semaphoren geben, die blockieren koennen.

wofuer braucht man da 2 semaphoren, ist das dafuer, was leonidas gerade vorgeschlagen hat?
ansonsten kannst du vielleicht etwas ausfuehrlicher werden :]?
snehls
Superfreund aka Der Schwede
Avatar
Member since Oct 2002
750 posts
Quote by Steppenwolf:
wofuer braucht man da 2 semaphoren, ist das dafuer, was leonidas gerade vorgeschlagen hat?

ich hab 2 semaphoren, die eine zeigt an wieviel noch geschrieben werden darf, die andere wieviel gelesen werden darf. bei einer semaphore weißt du ja nicht ob du jetzt alles auslesen darfst, oder alles vollschrieben kannst .... ausser du regelst den punkt unabhängig von den semaphoren...
"I will speculate that today’s single-threaded applications as actually used in the field could actually see a performance boost for most users by going to a dual-core chip, not because the extra core is actually doing anything useful, but because it is running the adware and spyware that infest many users’ systems and are otherwise slowing down the single CPU that user has today."
Mikey
SP Team
Avatar
Member since Nov 2002
641 posts
man kann ja eine semaphore für die freien plätze und eine für die belegten plätze machen. am ende zieht der erzeuger dann von den freien plätzen einfach die puffergrösse ab, was dazu führt dass semop so lang blockiert bis halt der puffer komplett frei ist..
Steppenwolf
Schläfer
Avatar
Member since Nov 2002
1535 posts
ich meinte eigentlich zusaetzlich zu den beiden, die du gerade beschrieben hast :].
im moment habe ich also 3 semaphoren - 1 fuer lesbare zeichen, 1 fuer schreibbare zeichen und 1 fuer den exclusiven zugriff auf den speicher. so hat es der sebbi beschrieben und so steht auch ein beispiel im skript.
bloss wozu sollte ich eine 4. semaphore brauchen, wie es frahi angedeutet hat?
frahi
Avatar
Member since Nov 2002
777 posts
hab ich angedeutet, dass man 4 braeuchte? das waer mir neu, ich hab gesagt, dass du beim verbrauchen/erzeugen die 2 Probleme haben kann,
- dass der schreiber was schreibt, was der leser noch nicht gelesen hat und
- dass der leser erst dann was lesen kann, wenn der schreiber schon fertig ist

Ein exklusiver Zugriff im Sinne von einer Sperrvariable ist dann nicht unbedingt notwendig, schlieslich greifen Leser und Schreiber immer nur auf Elemente zu, auf die sie das problemlos duerfen.

Allerdings vielleicht noch so als Denkanreiz: Was passiert, wenn -nachdem der Verbraucher beendet wurde- 2 neue genau gleichzeitig gestartet werden?
hefepils
Quatsch-auspuck-maschine
Avatar
Member since Oct 2002
210 posts
(ok, etwas spät der Beitrag)

Im Prinzip reicht ja eine binäre Semaphore (welcher Genus hier auch immer richtig sein mag), welcher den Zugriff auf den gemeinsamen Speicher regelt.
Das funktioniert.

Die Sache mit der Schreib- und dem Lesesemaphore hat eben den Vorteil, dass durchaus gleichzeitig geschrieben und gelesen werden kann, solange eben sichergestellt ist, dass ungelesene Daten nicht überschrieben, und ungeschriebene Daten nicht gelesen werden können.

Allerdings braucht man eben noch eine binäre Semaphore (ich hab das bei der 2-Semaphoren-Variante als dritte implementiert) die den Zugriff auf das shm-segment regelt, solange geprüft wird, ob schon ein anderer Verbraucher am Start ist.

Sonst könnten nämlich mehrere Verbraucher schön der Reihe nach sehen, "aha, da steht -1", und schön der Reihe nach ihre PID reinhauen (im dümmsten Fall), und das wäre ziemlich olum

Grammatik: mangelhaft (ja sorry, sag mir doch mal jemand, ob die einzahl von Semaphoren männlich, weiblich oder sonstwas, oder andorianisch ist)
++[>++[>++[>++[>++[>++[>+<-]<-]<-]<-]<-]<-]>>>++[>++[>++[>+<-]<-]<-]>>>[>+>+>+<<<-]>.>---.<.>.>

Linux ruuulez, Windows suckzzzz!!!11
This post was edited on 2004-01-28, 23:50 by hefepils.
Klöbi
Member since Oct 2002
76 posts
Dito! Es ist durchaus sinnvoll, eine 3-teilige Semaphore zu verwenden (bzw. drei einzelne). Eine, um den Lesezugriff auf den Ringpuffer zu koordinieren, eine für den Schreibzugriff auf denselben und eine für den exklusiven Zugriff auf die Verwaltungsstruktur.
Ich wünsche allen allzeit gesunde Daumen!  ;-)
Max
Member since Oct 2002
1296 posts
hmmm?
ich hab halt 2 Semaphoren, dass sich leser und schreiberling net überholen können und eine 3., dass nicht 2 leser gleichzeitig ne pid neischreiben...
BLUBB
Klöbi
Member since Oct 2002
76 posts
Sag ich doch.....
Ich wünsche allen allzeit gesunde Daumen!  ;-)
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please enter the word from the image into the text field below. (Type the letters only, lower case is okay.)
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Special characters:
Page:  previous  1  2 
Go to forum
Datenschutz | Kontakt
Powered by the Unclassified NewsBoard software, 20150713-dev, © 2003-2011 by Yves Goergen