【发布时间】:2020-04-06 06:12:36
【问题描述】:
这是一段代码。有人可以解释最后三个布尔语句。我以前从未见过这种语法。我不知道那里发生了什么。它是其他东西的简写吗?
我在三个 bool 语句上方包含了代码以提供一些上下文。
void *bob;
void *tod;
void *jon;
pthread_t *thrdA= malloc(9 * sizeof(pthread_t));
pthread_t *thrdB= malloc(9 * sizeof(pthread_t));
pthread_t *thrdC = malloc(9 * sizeof(pthread_t));
for(int i = 0; i<9; i++) {
pthread_create(&thrdA[i], NULL, FUNCT1, (void*)SAS);
}
for(int i = 0; i<9; i++) {
pthread_create(&thrdB[i], NULL, FUNCT2, (void*)SAS);
}
int x= 0;
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
pthread_create(&thrdC[x], NULL, FUNCT3, (void*)SAS);
x++;
}
}
for(int i=0; i<9; i++) {
pthread_join(thrdA[i], &bob);
pthread_join(thrdB[i], &tod);
pthread_join(thrdC[i], &jon);
}
bool x = (unsigned long)bob== 0;
bool z = (unsigned long)tod== 0;
bool y = (unsigned long)jon== 0;
【问题讨论】:
-
@AlexF 没错,但应该讨论一下 bob 的数据类型的含义。
-
这主要是因为pthreads返回一个void *,所以很多需要数字返回线程的人将它们用作转换值而不是指向值的指针。