对于我正在编写的某些代码,我试图获取一个线程,但是我一直遇到错误。我正在Visual Studio代码中在Linux上编程。
这是代码:
void* start(void *s) {
int me = (int*)s;
//int me = pthread_self();
printf("Entered: %d\n", me);
Lock(me);
printf("TEST 1");
for (int i = 0; i<MAX; i++) ans++;
printf("TEST 2");
Unlock(me);
printf("TEST 3");
return NULL;
}
pthread_create(&thread1, NULL, start, (void*)0);
pthread_create(&thread2, NULL, start, (void*)1);
pthread创建在main方法内部。我收到的错误:
错误:从“ int *”到“ int”的无效转换[-fpermissive] 49 | int me =(int *)s; | ^ ~~~~~~ | | | int *
答案 0 :(得分:0)
int*
是指向值的指针,而不是值本身。您已经传递了一个值转换为指针,应该将其转换回一个值:
int me = reinterpret_cast<int>(s);