if (!hThread || !dwThreadID)
return 1;
Wofür ist dieser if Befehl?
if hThread nicht und dwThreadID nicht wiederhole
Ich verstehe nicht was diese anweisung bezwecken soll und außerdem wäre es noch nett wenn mir jmd erklären könnte warum hier bei return eine 1 gesetzt wird kenne es bis jetzt nur mit einer 0 ?
Quote:
Originally Posted by .SkyneT.
Falls dein Compiler C++0x unterstützt könntest du Threads so verwenden:
Code:
#include <iostream>
#include <thread>
#include <chrono>
void ThreadFunc()
{
std::this_thread::sleep(std::chrono::seconds(1));
}
int main()
{
std::thread Thread(ThreadFunc); //Start Thread
Thread.join(); //Wait untill the thread finishes its work
return 0;
}
Ich denke er wird erstweil auch ohne auskommen.
Es scheint als würde der Visual c++ 2010 Compiler kein C++0x
unterstützen da er mir etliche Fehler anzeigt und es sich auch nicht Compilen lässt trd danke für die Antwort.
if (!hThread || !dwThreadID)
return 1;
Wofür ist dieser if Befehl?
if hThread nicht und dwThreadID nicht wiederhole
Ich verstehe nicht was diese anweisung bezwecken soll und außerdem wäre es noch nett wenn mir jmd erklären könnte warum hier bei return eine 1 gesetzt wird kenne es bis jetzt nur mit einer 0 ?
Das if macht folgendes:
Code:
if(hThread == 0 || dwThreadID == 0)
Und etwas anderes als 0 gibt man dann zurück, wenn das Programm frühzeitig bzw. unerwartet beendet wird. Also konkret wenn ein Fehler aufgetreten ist. Aber das ist nur wichtig, wenn externe Programme prüfen sollen, ob dein Programm sauber beendet wurde.
Quote:
Originally Posted by marykillsjane
Es scheint als würde der Visual c++ 2010 Compiler kein C++0x
unterstützen da er mir etliche Fehler anzeigt und es sich auch nicht Compilen lässt trd danke für die Antwort.
Warum nutzt du nicht die aktuelle 2012er Version? Da wird das bereits unterstützt.
Ich nutz das seit es noch VS11 Beta hieß und kann mir nicht mehr vorstellen wieder zurück zu müssen. Intellisense ist deutlich zuverlässiger (aber noch immer ziemlich beschissen), vom C++11 Standard ist deutlich mehr implementiert und du hast jede Menge andere neue Spielzeuge bekommen wie z.B. C++ AMP.
Bugs sind mir bisher keine aufgefallen, abgesehen von den üblichen Intellisense Spinnereien.
Das wurde vor ein oder zwei Wochen erst auf den Markt gebracht, also keine Beta, nein.
Ein Updgrade von Visual Studio hat sich imo bisher noch immer gelohnt und das ist dieses mal nicht anders!
Und etwas anderes als 0 gibt man dann zurück, wenn das Programm frühzeitig bzw. unerwartet beendet wird. Also konkret wenn ein Fehler aufgetreten ist. Aber das ist nur wichtig, wenn externe Programme prüfen sollen, ob dein Programm sauber beendet wurde.
Warum nutzt du nicht die aktuelle 2012er Version? Da wird das bereits unterstützt.
Danke für die erklärung.
Ich nutze die 2010er version von Visual c++ ,da es bei einem Buch was ich mir mal gekauft habe als Cd dabei war und ich mich wie gesagt bis jetzt eigentlich wenig-garnicht mit meinem Compiler befasst habe da ich ja erstmal die Grundlegenden Dinge lernen wollte.
Wenn ich mir jetzt die 2012 version holen will kostet das bestimmt wd was oder kann man das kostenlos updaten?Weil wenn es Kostenpflichtig ist lohnt sich sowas für mich wenn überhaupt erst in einigen Monaten wenn ich auch was mit den ganzen neuen Dingen anfangen kann ^^.
Die Fragen haben sich nun auch alle geklärt ich habs jetzt auch endlich gebacken bekommen es nicht durch enter ( wegen getchar() ) die Schleife stoppen zu lassen sondern per eingabe vielen Dank an alle ihr habt echt Hammer Beispiele gebracht und das auch noch sehr schnell.
Gute Community hier ^^.
Wenn ich mir jetzt die 2012 version holen will kostet das bestimmt wd was oder kann man das kostenlos updaten?Weil wenn es Kostenpflichtig ist lohnt sich sowas für mich wenn überhaupt erst in einigen Monaten wenn ich auch was mit den ganzen neuen Dingen anfangen kann ^^.
Es gibt immer auch die kostenlose Express Version.
Also ich würde nicht 4 Funktionen erstellen, die genau das Gleiche machen. Damit verfehlst du ja irgendwie den Sinn von Funktionen. Ich bevorzuge da eher so etwas:
Ich habe nochmal eine andere Frage, die bei mir aufgetaucht ist. Wie schaut es denn eigentlich bei parallelen Algorithmen mit dem Zugriff auf Speicherplatz aus?
Wenn wir zB einen MergeSort hernehmen: können die 4 Threads gleichzeitig auf verschiedene Stellen eines int-Arrays zugreifen? Die Speicherstellen würden sich ja nie überschneiden. Also müsste das ja (meiner Meinung nach) eigentlich gehen.
Aber wie sähe das jetzt zB bei einem Vector (der hierfür denke ich eh nicht geeignet ist) aus?
Bei Vectoren ist es nur bedingt möglich - man kann nicht vorhersagen wann und ob bei einer Vectoroperation neuer Speicher angefordert wird und somit der gesamte Vector im Speicher verlagert wird. Bei einer Sortierfunktion kommt es auf den Vector an - bei einem Vector der nur Pointer enthält ist es von den Zugriffen her durchaus möglich, denn ein Pointer ist von atomarer größe, wird also immer im gesamten gelesen und geschrieben, sodass keine kaputten Pointer gelesen werden können da entweder der gesamte Pointer geändert wurde oder noch nichts.
An sich stelle ich es mir jedoch schwierig vor einen generellen Vector mit mehrere Threads zu sortieren, angenommen der vector sieht so aus:
1
3
2
4
und man hat 2 Threads die den Vector sortieren sollen - der erste Thread muss zwangsläufig die "3" in den unteren Speicherbereich schieben, für den aber eigentlich der 2te Thread zuständig ist. Der zweite Thread tauscht die 2 mit der 3 bevor der erste Thread bei der 3 angekommen ist, hat diese aber eventuell bereits in einer Puffervariable - das Resultat von dem Beispielvector sortiert mit der Bubblesort Methode und 2 Threads ergibt nach der Sortierung dadurch wieder den Ausgangsvector. Bei nicht atomaren Werten wie char* ggf. einen Deadlock oder eine AV.
Er sagte ja auch nicht Bubblesort, sondern Mergesort: Das ist auf Verfahren ultithreading ausgelegt, hab jetzt aber auch nicht im Kopf, wie es funktioniert.
Quote:
man kann nicht vorhersagen wann und ob bei einer Vectoroperation neuer Speicher angefordert wird
Wieso sollte beim reinen verschieben von bereits vorhandenen und allozierten Elementen neuer Speicher angefordert werden?
Lässt sich da der Standard echt so viel Spielraum? oO
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);