Debug this code in C so it runs. Here it is. Code: #include #include #include #include void multiThreads(); void* threadFunction(void* vargp); void main(){ multiThreads(); return 0; } void multiThreads(){ int SIZE = 5; int i; int error; pthread_t tid[SIZE]; while(i < SIZE){ error = pthread_create(&(tid[i]), NULL, &threadFunction, (void*)&(tid[i])); if(error != 0){ printf("\nThread can't be created : [%s] \n Press 'Enter’ to continue...", strerror(error)); } i++; }//end while while(i < SIZE){ pthread_join(tid[i], NULL); i++; } } void* threadFunction(void* vargp){ int LOOP = 5; int i; int* myid = (int*)vargp; printf("\n-----------------------------\n"); printf("\nThread %i has started\n", myid); printf("\n-----------------------------\n"); for(i = 0; i <= LOOP; i++){ printf("\nThread ID %i is printing iteration %i", myid, LOOP); } printf("\nThread %i has finished\n", myid); return NULL; }
Debug this code in C so it runs.
Here it is.
Code:
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
void multiThreads();
void* threadFunction(void* vargp);
void main(){
multiThreads();
return 0;
}
void multiThreads(){
int SIZE = 5;
int i;
int error;
pthread_t tid[SIZE];
while(i < SIZE){
error = pthread_create(&(tid[i]), NULL, &threadFunction, (void*)&(tid[i]));
if(error != 0){
printf("\nThread can't be created : [%s] \n Press 'Enter’ to continue...", strerror(error));
}
i++;
}//end while
while(i < SIZE){
pthread_join(tid[i], NULL);
i++;
}
}
void* threadFunction(void* vargp){
int LOOP = 5;
int i;
int* myid = (int*)vargp;
printf("\n-----------------------------\n");
printf("\nThread %i has started\n", myid);
printf("\n-----------------------------\n");
for(i = 0; i <= LOOP; i++){
printf("\nThread ID %i is printing iteration %i", myid, LOOP);
}
printf("\nThread %i has finished\n", myid);
return NULL;
}
Step by step
Solved in 4 steps with 3 images