Threads - pthreads POSIX

  • Themenstarter Themenstarter caffeine
  • Beginndatum Beginndatum
C

caffeine

Guest
Nabend zusammen :) ,

Ich versuche mich im Moment an der Lösung folgenden Problems:

Innerhalb eines C-Programms (Funktionalität sei weniger wichtig) möchte ich eine Unterfunktion mit mehreren Theras aufrufen, möglicherweise mit verschiedenen Parametern die übergeben werden.
Die Threads sollen mit pthread_create erstellt werden und (!) mehr als einen Parameter übergeben bekommen und an dieser Stelle wird es bei mir immer kritisch.
Dadurch müssen die Parameter innerhalb einer von mir initialisierten Datenstruktur übergeben werden, um es dann so wiederum an pthread_create übergeben zu können.

So weit die Theorie, meine Ausgabe schießt immer weit über das Ziel hinaus...


Code:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

pthread_t thread;
struct meineStruktur 
{
	int zahl1;
	int zahl2;
};

void addiere(int zahl1, int zahl2);

int main(int argc, char **argv)
{
	
	struct meineStruktur bspStruktur;
	bspStruktur.zahl1 = 1;
	bspStruktur.zahl2 = 2;

	pthread_create(&thread,NULL,(void *) addiere, &bspStruktur);
	pthread_join(thread,NULL);

	return EXIT_SUCCESS;
}


void addiere(int zahl1, int zahl2)
{
	printf("Ergebnis der Addition: %d\n",(zahl1+zahl2));
}

Ausgabe :

Ergebnis der Addition: 1659775856

Wär' echt super wenn jmd einen Blick drauf werden würde ... Kann auch an der späten Uhrzeit liegen :P :D

Schönen Abend noch , tanye
 
Code:
void addiere(void *p)
{
   int zahl1, zahl2;
   
   zahl1 = ((struct meineStruktur *)p)->zahl1;
   zahl2 = ((struct meineStruktur *)p)->zahl2;

   printf("Ergebnis der Addition: %d\n",(zahl1+zahl2));
}
könnte funktionieren.

Hat perfekt funktioniert, vielen Dank :thumb_up: :)
 
Zurück
Oben