所以我有两个主题。一个人做数学,另一个人显示数学结果。有时,结果线程首先显示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;
}
答案 0 :(得分:0)
pthread_cond_wait()阻止当前线程,然后使用pthread_cond_signal()或pthread_cond_broadcast()唤醒它