当我尝试编译时,我收到一个错误:
警告:传递
pthread_create
的参数1使得指针来自整数而没有强制转换。
如果有人可以帮助我......
int Traveler(int id, int numBags)
{
int i;
int err;
err = pthread_create(id, NULL, Traveler, NULL);
if(err!=0)
{
return -1;
}
else
{
}
}
答案 0 :(得分:4)
错误很清楚。第一个参数应该是指针而不是整数。
man pthread:
int pthread_create(pthread_t *restrict thread,
const pthread_attr_t *restrict attr,
void *(*start_routine)(void*), void *restrict arg);
The pthread_create() function shall create a new thread, with
attributes specified by attr, within a process. If attr is NULL, the
default attributes shall be used. If the attributes specified by attr
are modified later, the thread's attributes shall not be affected. Upon
successful completion, pthread_create() shall store the ID of the cre-
ated thread in the location referenced by thread.
在pthread_create调用中在id
之前粘贴&符号之前重新读取最后一句话。 EDIT2:您还必须将id
定义为pthread_t。
编辑:
实际上,在同一行上还有另外两个问题:start_routine需要是一个函数,它接受一个参数而不是两个,但最糟糕的是这个fork bomb因为你传递了相同的函数你是来电话的!