Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
10.12.2003, 22:11
KillerDoc



Hallo.

Ich versuche schon den ganzen Tag herrauszufinden wie ich unter LInux einen Thread, also einen zweiten Ausführungszweig für mein Programm starten kann.
Folgendes hab ich im Moment:
Quellcode:pthread_attr_t ta;
pthread_attr_init(&ta);
pthread_attr_setschedpolicy(&ta,SCHED_OTHER);

pthread_create(NULL,&ta,testloop,this)
Das Problem ist dass pthread_create zwar einen Thread beginnt, aber der Instruction Pointer dann nichtmehr zurückkehrt.. Die Ausführung wird einfach in testloop fortgesetzt, und sobald testloop returned verabschiedet sich das Programm per SIGSEGV :/

ich hab schon mit diversen Prametern für die schedpolicy herumprobiert, aber es tritt immer der gleiche Fehler auf. :/

Ich bin echt schon am verzweifeln mit dem fsck.. :/( Vielleicht weiß ja jemand von euch weiter :)

--

lazy sunday afternooon
i got no mind to worry
i close my eyes and drift away....

zum Seitenanfang zum Seitenende Profil || Suche
001
11.12.2003, 18:16
[RMen]OneStone



Wenn du nur ein zweites brauchst kannst du afaik forken, kenne mich aber net viel aus.

Quellcode:int main(int iArgC, char * szArg[])
{
  pid_t pid;

  if((pid = fork()) == 0) // sohn
  {
    // ...
  }
  else  // mutter
  {
    // ...
  }

  return 0x1337;
}
edit: Argh, ThWB hat kein [cpp] :/

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/


Dieser Beitrag wurde am 11.12.2003 um 18:17 von [RMen]OneStone bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
002
11.12.2003, 23:25
KillerDoc



Thx für die Antwort.

Der Thread und das Hauptprogramm brauchen einen gemeinsamen heap.. deswgen kann i fork leider ned so einfach verwenden.

Aber inzwischen hab ich den Thread zum laufen gebracht. Der Fehler war dass ich als ersten Parameter immer NULL an create übergeben habe. Offensichtlich funktioniert der Thread nur dann richtig wenn man einen Zeiger auf pthread_t übergibt. Ich dachte das würde ich nur brauchen wenn ich später zugriff auf den thread brauche zb für join und so. Deswegen bin ich gar nicht auf die Idee gekommen da was anderes als NULL zu probieren (ich depp... :) )

--

lazy sunday afternooon
i got no mind to worry
i close my eyes and drift away....

zum Seitenanfang zum Seitenende Profil || Suche
003
16.12.2003, 12:30




(none)

--

zum Seitenanfang zum Seitenende Profil || Suche