Guten Tag Leute,
Ich befasse mich seid ca 2 monaten immer mal wd mit c++ und probiere mich dran einfache Programme zu schreiben .
Nun aber wollte ich mich mal am multithreading versuchen da ich eine Schleife programmieren will die solange läuft bis der Benutzer einen button drückt oder Bei der konsole per eingabe die schleife stoppt.
Mir wurde gesagt ich soll eine globale Variable definieren was ich getan habe und dann die schleife in einen Threat packen soll .Mein Problem ist nun aber das ich mir etliche Tuts meist auf Englisch durchgelesen habe aber nicht ganz durchblicke.
Es wäre wirklich nett wenn jmd von euch mir ein beispiel machen würde und mir sagen würde was ich alles für den Threat benötige ( includes,code usw ) ich hoffe jmd kann mir da vlt helfen weil ich wie gesagt bei den Tuts dazu nicht wirklich durchblicke wie das geht.
Edit :Ich Programmiere in c++ und benutze den Dev c++ compiler
Vielen dank erstmal für die Antwort werde den code heute abend mir nochmal genau angucken und ausprobieren da ich gleich noch weg muss.
Zu der entwicklungsumgebung ich habe visual c++ 2010 express allerdings finde ich es am anfang erstmal übersichtlicher mit dev c++ zu proggen ,da man sich in Visual c++ z.b. bei einer forms anwendung zwar alles an fenstern buttons usw zusammenklicken kann aber im endeffekt weiß ein anfänger wie ich nicht was die ganzen vordefinierten codes alles bewirken.Von daher möchte ich halt erstmal alles selbst an includes code usw schreiben um auch zu verstehen warum usw.
Natürlich kann ich mir in visual c++ 2010 auch einfach ein leeres Projekt anlegen, aber da gibt es dann für mich keinen unterschied ob ich das mit dev c++ oder mit visual mache ^^. Muss erstmal alles richtig lernen dann kann ich mich damit befassen welche entwicklungsumgebung besser für mich geeignet ist.
Edit: Habe noch nie mit der Win Api gearbeitet muss ich ein bestimmtes include noch mit einbinden?
Ich habe nun das Beispiel von Dr.Coxxy genommen da es für mich als Anfänger einfacher zu verstehen war auch wenn es scheinbar wie du sagtest nicht die beste Variante ist.Vielen dank euch allen für die Hilfe das hat sehr gut geklappt mit dem Thread allerdings hätte ich noch ein paar Fragen undzwar :
Durch System("Pause"); wird ja darauf gewartet das der benutzer irgendeine Taste drückt um das Programm zu schließen wie kann ich das ganze nun so gestalten das die schleife im Threat beim drücken von einer von mir festgelegten Taste die schleife stoppt und bei einer anderen festgelegten Taste den Threat erneut startet?
Und die 2te Frage wäre warum werwenden manche std::cout und andere nur cout wo ist der unterschied?
Nochmal Vielen dank euch allen das ihr nem blutigen Anfänger wie mir helft mit dem Threat hat ja schonmal echt klasse geklappt
Wenn man nicht genau weiß was man macht ist die 2. Variante eher zu empfehlen.
Das Beispiel von Dr.Coxxy ist, wie das meiste was er von sich gibt, kompletter schwachsinn. Das Beispiel von tnd0 ist da doch deutlich besser geeignet.
System("Pause"); solltest du unter keinen umständen verwenden. Wie du den Thread stopst weißt du ja nun. Und wie du einen neuen startest solltest du auch wissen Ich persönlich steuer meine Threads in der Regel über mehrere Zustände.
Wenn man nicht genau weiß was man macht ist die 2. Variante eher zu empfehlen.
Das Beispiel von Dr.Coxxy ist, wie das meiste was er von sich gibt, kompletter schwachsinn. Das Beispiel von tnd0 ist da doch deutlich besser geeignet.
System("Pause"); solltest du unter keinen umständen verwenden. Wie du den Thread stopst weißt du ja nun. Und wie du einen neuen startest solltest du auch wissen Ich persönlich steuer meine Threads in der Regel über mehrere Zustände.
Sehr witzig - not.
die sicherheitsbedenken und geschwindigkeitsnachteile von system sind bei diesem beispielcode nun wirklich vollkommen irrelevant.
TerminateThread ist nicht sauber, aber dafür gäbe es ja die DoRun variable, die ich auch eingebaut habe.
tnd0 hat diese laufzeitvariablenmethode verbessert indem er es als parameter in den thread weitergibt, richtig sauber wäre jetzt eine klasse, die den thread komplett abstrahiert, was ein beispiel eines threads aber bei weitem übersteigt.
Der te hat lediglich nach einem beispiel für einen thread gefragt, den ich ihm gegeben habe.
Anfänger fragt nach Beispiel - liefern wir ihm unsauberen Dreckscode! Aber hey, man muss C unbedingt for C++ lernen! Man sieht ja, was es dir anscheinend gebracht hat :|
Ich versuche mich grad auch am 2ten beispiel was ich daran aber grade nicht verstehe ist warum #define WIN32_LEAN_AND_MEAN definiert wird aber nirgends im weiteren Quelltext benutzt wird .
Ich würde nicht die Win32 Api benutzen für MultiThreading. Natürlich funktioniert das alles,nur fehlen wichtige Funktionen fürs MultiThreading. C++ 11 oder boost enthalten OPP Element für Threads. Außerdem sollte man hier auch mal CriticalSections und Mutex erwähnen,da diese sehr wichtig sind wenn mehere Threads an einer Sache arbeiten sollen.
Vb.Net String für multithreading? 11/24/2011 - General Coding - 13 Replies Hey, ich habe einen socket server mit multithreading und setze nach Class ein paar sachen wie z.b.
Dim paketcommand2 as string = vbnullstring
ich greife mit einem multithreading thread darauf zu und dann kommt immer
Das ActiveX-Steuerelement 248dd896-bb45-11cf-9abc-0080c7e7b78d kann nicht instanziiert werden, da der aktuelle Thread kein Singlethread-Apartment ist.
wie kann ich das ändern ohne es in jede Sub reinzuschreiben? da ich dort auch sachen gesetzt habe die von mehreren subs...
C++ Multithreading + Klassen 01/16/2010 - C/C++ - 8 Replies Mein Problem ist es , dass ich eine Klasse habe (nehmen wir als Beispiel Auto)
und eine Funktion (Beispiel : BremswegBerechnen) habe , die aber in einem extra Thread laufen soll . Also so in etwa :
.
.
.
int main()
{
CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)BM W.BremswegBerechnen, 0, 0, 0);