【发布时间】:2017-03-19 13:45:56
【问题描述】:
我正在尝试理解以下代码。这段代码没有竞争条件,但我看不懂。
#include <stdio.h>
#include <pthread.h>
void *foo(void *vargp) {
int id;
id = (int)vargp;
printf("Thread %d\n", id);
}
int main() {
pthread_t tid[2];
int i;
for (i = 0; i < 2; i++)
pthread_create(&tid[i], NULL, foo, (void *)i);
pthread_join(tid[0], NULL);
pthread_join(tid[1], NULL);
return 0;
}
从int 到void* 的类型转换是如何工作的?
【问题讨论】:
-
强制转换与竞争条件无关,而且似乎这段代码没有说明如何避免竞争条件。
-
“此代码没有竞争条件”。因为它不会在没有同步的情况下访问共享资源,而不是因为任何强制转换。