Du bist nicht angemeldet.

Werbeanzeige

Volker_Neff

Treue Seele

  • »Volker_Neff« ist der Autor dieses Themas

Beiträge: 249

Wohnort: Hamburg

  • Private Nachricht senden

1

18.01.2015, 19:23

[C++] Input abgreifen

Ich habe ein klienes Problem was ich einfach nicht gelöst bekomme. Und zwar gehtes darum das ich zwei Threads habe.
Einer davon macht die normale Programm arbeit und ein zweiter kümmert sich um Spizialfälle. Also T1 verarbeitete alles was iergendwie was mit dem Programm zu tun hat wie etwa stop oder start login. Und T2 hat dann Fragen die vom Nutzer beantwortet werden sollen wie etwa das Passowrt oder so. Nun habe ich das problem das mir leider T1 mit seinem std::cin schon die Antwort klaut bevor T2 sie findet.
Gibt es iergend einen Trick das ich endweder den Input bei T1 kurz pausiere oder den ganzen Thread von T2 aus zum schlafen bekomme?

Danke schon einmal für die Antworten
Volker

Legend

Alter Hase

Beiträge: 737

Beruf: Softwareentwickler

  • Private Nachricht senden

2

18.01.2015, 19:32

Das du std::cin in zwei Threads abfrägst ist etwas wovon ich dir auf jeden Fall abraten würde.
Genau ein Thread sollte die Benutzereingaben entgegen nehmen und bei Bedarf Aufgaben an weitere Threads deligieren.
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

3

18.01.2015, 20:18

Macht sowieso irgendwie wenig Sinn das auf zwei Threads aufteilen zu wollen

MfG
Check

FSA

Community-Fossil

  • Private Nachricht senden

4

18.01.2015, 20:44

Er will wohl in beiden Threads Zugriff auf die selben Daten haben.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veralteten strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Volker_Neff

Treue Seele

  • »Volker_Neff« ist der Autor dieses Themas

Beiträge: 249

Wohnort: Hamburg

  • Private Nachricht senden

5

24.01.2015, 12:40

Naja FSA beschreibt es schon ganz gut. Ich habe halt einen Thread der nur auf Inputs wartet. Da ich ja nicht wissen kann wann der User das Program schließen möchte. Und dann habe ich halt den Moment wo der User auf fragen vom Program antworten soll. Jetzt ist meine Frage wie schafft ihr es zu unterscheiden was Allgemeiner Input ist und was die Antwort auf eine bestimmte Frage ist?

FSA

Community-Fossil

  • Private Nachricht senden

6

24.01.2015, 12:52

if()
else()
?

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veralteten strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Nox

Supermoderator

Beiträge: 5 282

Beruf: Student

  • Private Nachricht senden

7

24.01.2015, 13:20

Das klingt für mich eher nach (Programm)Zuständen und nicht nach etwas was Threading bedarf (es dürfte sogar eher hinderlich sein). Somit trifft es if() else ganz gut.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

NachoMan

Community-Fossil

Beiträge: 3 905

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

8

24.01.2015, 13:27

Ich vermute er hat das Problem, dass er nicht gleichzeitig cin abfragen und das Programm laufen lassen kann. Dafür gibt es kbhit() https://www.c-plusplus.net/forum/39320-full
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Volker_Neff

Treue Seele

  • »Volker_Neff« ist der Autor dieses Themas

Beiträge: 249

Wohnort: Hamburg

  • Private Nachricht senden

9

24.01.2015, 14:18

Also ich glaube ich habe einen generellen Gedanken Fehler. Mein Plan war halt ein Thread zu haben der alle Inputs abfragt und dann an einer Schnittstelle zur Verfügung stellt. Und mein Plan war dann wenn ein weiterer Thread etwas möchtet dann wartet der normale eingabe Thread und macht mit seiner Arbeit weiter wenn die Frage beantwortet ist. So das das mit dem Warten nichts wird habe ich jetzt festgestellt und suche jetzt eine neue Variante das Problem zu lösen.
Da ist NachoMan Idee eigentlich schon die beste. Gibt es so etwas auch für ganze Wörter oder Sätze? Damit ich nicht immer warten muss bis mein Programm weiter laufen kann?
Es soll zum Beispiel etwas geben wie close zum schließen des Program's aber man soll auch zum Beispiel ein Passwort eingeben können. Was mach ich jetzt mit eine, If else block wenn das Passwort leider close ist?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Volker_Neff« (24.01.2015, 14:36)


Werbeanzeige