作者:发的好地方 | 来源:互联网 | 2023-08-15 18:54
IamtryingtocreateathreadandfromwhatIrememberthisshouldbetherightwaytodoit:我正在尝试
I am trying to create a thread and from what I remember this should be the right way to do it:
我正在尝试创建一个线程,我记得这应该是正确的方法:
#include
#include
#include
#define NUM_THREADS 5
int SharedVariable =0;
void SimpleThread(int which)
{
int num,val;
for(num=0; num<20; num++){
if(random() > RAND_MAX / 2)
usleep(10);
val = SharedVariable;
printf("*** thread %d sees value %d\n", which, val);
SharedVariable = val+1;
}
val=SharedVariable;
printf("Thread %d sees final value %d\n", which, val);
}
int main (int argc, char *argv[])
{
pthread_t threads[NUM_THREADS];
int rc;
long t;
for(t=0; t
And the error that I'm getting is this one:
我得到的误差是这个
test.c: In function ‘main’: test.c:28: warning: passing argument 3 of ‘pthread_create’ from incompatible pointer type /usr/include/pthread.h:227: note: expected ‘void * (*)(void *)’ but argument is of type ‘void (*)(int)’
测试。c:在功能“main”:test。c:28:警告:将“pthread_create”的参数3从不兼容指针类型/usr/ include/pthread中传递。h:227:注意:预期“void * (*)(void *)”,但参数是“void (*)(int)”
I cannot change the SimpleThread function so changing the type of the parameter is not an option even though I already tried and it didn't work either.
我无法更改SimpleThread函数,因此更改参数的类型不是一个选项,尽管我已经尝试过了,而且它也不起作用。
What am I doing wrong?
我做错了什么?
2 个解决方案