pthread_create - 在c中编译时出错

时间:2012-04-24 15:55:34

标签: pthreads

当我尝试编译时,我收到一个错误:

  

警告:传递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
         {

         }
    }

1 个答案:

答案 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因为你传递了相同的函数你是来电话的!