Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Thread Problem

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
21.02.2008, 19:49 Uhr
~threadi
Gast


Hallo,

Also folgender Codeauszug:


C++:
#include <iostream>

using namespace std;


int main ()
{
// Make a .time file in /tmp directory for time measuring algorythm
system("touch /tmp/time");


/*


THIS IS THE THREAD FOR THE TIME MEASURE!!!

*/

// Here come the threading parts
pthread_t thread1, thread2;
char *message1 = argv[2];
int iret1;
// Create the thread and link them with threadf function
iret1 = pthread_create( &thread1, NULL, threadf, (void*) message1);
// Join them
pthread_join( thread1, NULL);
cout << "Hello From Main";
}

void *threadf( void *ptr )
{
// The variable argument will get the time to wait in seconds
// Basically it's just the argv[2]!
//char *argument;
//argument = (char *) ptr;

//int timewait = atoi(argument);
// We are in the threaded function
// Time to wait goes here
sleep(10);
system ("rm -rf /tmp/time");

}    




Sollte jetzt eigentlich nich folgendes passieren:
Der Thread wird gestartet.
Es wird auf dem Bildschirm "Hello From Main" angezeigt.
Der Thread wartet derweil parallel die 10 Sekunden ab und löscht dann /tmp/time !

Was passiert ist:
Es wird 10 Sekunden gewartet. /tmp/time wird gelöscht.
Es wird "Hello From Main" angezeigt.
Also ob es eine normale Funktion ist.

compilieren tu ich mit:

Code:

# g++ -pthread test_thread.cpp -o thread.out






LG und Danke für die Hilfe

Dieser Post wurde am 21.02.2008 um 19:54 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.02.2008, 08:51 Uhr
ao

(Operator)


Lies nach, was pthread_join tut: Drauf warten, dass der genannte Thread sich beendet. Der wartet, löscht und beendet sich dann. Bis dahin bleibt main in join hängen. Erst danach wird "Hello From Main" ausgegeben.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.02.2008, 09:47 Uhr
~threadagain
Gast


Hallo,


Danke
Ja ich habe das komplett überlesen, habe jetzt aber ne neue Frage und zwar:
Eine Bedingung im Thread, sieht ungefähr so aus:

Der Thread th
{
sleep (10);
//Hier steht der Programmcode... irgendwas eben
}

Im Main:
Starte Thread th;
if (something == true)
{
// Breche den Thread ab!!!
}
else
{
// Es spielt keine Rolle lasse den Thread arbeiten
}


Mein letztes Problem ist nun, wie ich diesen Thread abbreche?
Wenn ich nämlich folgendes mache:
pthread_exit(&tid);
Dann wird gewartet bis der Thread beendet wird und dann wird das Main Programm leider auch beendet. Mein Main Programm hängt aber in einer Schleife und sollte NICHT beendet werden!
Und es sollte auch nicht gewartet werden bis der thread fertig ist sondern der thread sollte SOFORT GEKILLT werden!


Gibt es da ne Möglichkeit für?
Danke!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: