I wrote some code in c, using pthread (I configured the linker and compiler in eclipse IDE first).
#include <pthread.h>
#include "starter.h"
#include "UI.h"
Page* MM;
Page* Disk;
PCB* all_pcb_array;
void* display_prompt(void *id){
printf("Hello111\n");
return NULL;
}
int main(int argc, char** argv) {
printf("Hello\n");
pthread_t *thread = (pthread_t*) malloc (sizeof(pthread_t));
pthread_create(thread, NULL, display_prompt, NULL);
printf("Hello\n");
return 1;
}
that works fine. However, when I move display_prompt to UI.h
no “Hello111 ” output is printed.
anyone know how to solve that?
Elad
When
mainreturns, all threads terminate. If the thread you created hasn’t printed anything at that moment, it never will. This is up to chance, not up to the location of the function’s implementation.To have
mainwait until the thread is done, usepthread_join:By the way:
mallocing; you can just createthreadon the stack.0from yourmainfunction if it ended without an error.