开发者

remote function with pthread

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"
开发者_JS百科
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 main returns, 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 main wait until the thread is done, use pthread_join:

int main(int argc, char** argv) {
    printf("Hello\n");
    pthread_t thread;
    pthread_create(&thread, NULL, display_prompt, NULL);
    printf("Hello\n");
    pthread_join(thread);
    return 0;
}

By the way:

  • There's no need for mallocing; you can just create thread on the stack.
  • You should return 0 from your main function if it ended without an error.
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜