我可以确保某个线程总是最后工作,没有信号量吗?

时间:2014-10-11 02:58:48

标签: c multithreading posix mutex

所以我有两个主题。一个人做数学,另一个人显示数学结果。有时,结果线程首先显示0而不是有效结果。我该如何防止这种情况?

void *math  (void *arg);
void *result(void *arg);

int a;

int main(int argc, char *argv[]) {
    pthread_t mathT;
    pthread_t resultT;

    pthread_create(&mathT, NULL, math, NULL);
    pthread_create(&resultT, NULL, result, NULL);

    pthread_join(mathT, NULL);
    pthread_join(resultT, NULL);

    return 0;
}

void *math(void *arg) {
    a = 9 + 9;
    return NULL;
}

void *result(void *arg) {
    printf("%d", a);
    return NULL;
}

1 个答案:

答案 0 :(得分:0)

pthread_cond_wait()阻止当前线程,然后使用pthread_cond_signal()或pthread_cond_broadcast()唤醒它