Ich habe ein kleines Programm in C mit Windriver zu schreiben, die drei Threads erstellt:Sleep() beendet Faden in Windriver
- Thread # 1: erzeugt eine Zufallszahl
- Thread # 2: kill # 3, wenn die Zufallszahl kleiner 25
- Thread # 3: kill # 2, wenn die Zufallszahl größer 25
einen Thread zu töten, ich möchte sicherstellen, warten sie erstellt wird, so Ich habe festgestellt, dass ich sleep()
verwenden kann, um einen anderen Thread übernehmen zu lassen und sich selbst erstellen zu lassen. Aber alle sterben mit dem Schlaf.
kam ich mit diesem Code auf:
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define NUM_THREAD 3
int theRandomNumber = 0;
void *RandomNumber (void *threadid){
int id = (int) threadid;
//srand();
theRandomNumber = rand() % 50;
printf("Thread %d: Random: %d \n", id, theRandomNumber);
pthread_exit(NULL);
return 0;
}
void *CheckNumber (void *threadid){
int id = (int) threadid;
printf("Thread #%d is active and going to sleep now\n", id);
sleep(1000);
//here he dies without annoucing anything or something
printf("Thread #%d is active again and back from sleep\n", id);
if (id == 1){
if (theRandomNumber >= 25){
pthread_cancel(2);
printf("THREAD %d: Thread #2 is closed \n", id);
}
}
else{
if (theRandomNumber < 25){
pthread_cancel(1);
printf("THREAD %d: Thread #1 is closed \n", id);
}
}
return 0;
}
int main (int argc, char *argv[]){
pthread_t threads[NUM_THREAD];
int t = 0;
printf("in main: create thread #%d \n", t);
pthread_create (&threads[t], NULL, RandomNumber, (void *) t++);
printf("in main: create thread #%d \n", t);
pthread_create (&threads[t], NULL, CheckNumber, (void *) t++);
printf("in main: create thread #%d \n", t);
pthread_create (&threads[t], NULL, CheckNumber, (void *) t++);
}
Der Teil mit den Randomnumber
funktioniert gut, ich habe es hier links, aber ich kann es auf Anfrage senden.
Nachdem ein Thread die sleep()
erreicht, wird es beendet.
Console Log:
in Haupt: create Gewinde # 0
in Haupt: Gewinde # 1
in Haupt erstellen: create Thread # 2
Thread # 0: Random: 8
Thread # 1 aktiv und jetzt
Thread # 2 ist aktiv und jetzt
Nichts passiert nach dem Schlaf schlafen gehen schlafen gehen. Irgendwelche Ideen?
Dies ist hier nicht der Punkt ist, aber wenn Sie nicht verarbeiten Programmargumente zu tun, verwenden Sie die 'main' Prototyp ohne Argumente, auch bekannt als' int main() ' – jdarthenay
Es wäre Ihr Hauptprogramm erscheinen – CarlH
endet habe ich versucht, Ihre Kompilieren Code, es gibt Fehler. Könnten Sie bitte einen Code bereitstellen, den Sie kompilieren können? – jdarthenay