日期:2014-05-16  浏览次数:20786 次

怎么循环建立多个线程
请问怎么在一个循环语句中建立线程?就是每循环一次建立一个线程,并且已建立的线程不关闭
例如:
C/C++ code


for(int i=0;i<5;i++)
{
     pthread_create();    //这行代码该怎么写才能在循环结束之后创建了5个线程?
}






------解决方案--------------------
pthread_t a_thread[5];

if (pthread_create(&a_thread[i], NULL, /*注释*/, (void *)message) < 0)
/*使用缺省属性创建线程*/
{
perror(“fail to pthread_create”);
exit(-1);
}
注释部分可以用一个函数指针数组;
我是这么想的~~~~~
------解决方案--------------------
不知道楼主要的是不是这个效果,简单写了个例子:

C/C++ code

#include <unistd.h>
#include <pthread.h>
#include <stdio.h>

void *ping_pthead(void* arg)
{
   while(1)
   {
     int id = arg;
     printf("arg = %d, ping\n", id);
     sleep(2);
   }
}

int main(int argc, char** argv)
{
  pthread_t pid[5];
  int i = 0;
  for (i = 0; i < 5; i++) {
    pthread_create(&pid[i], NULL, ping_pthead, (void*)i);
    sleep(1);
    printf("i=%d\n", i);
  }

  printf("............\n");

  for (i = 0; i < 5; i++) {
    pthread_join(pid[i], NULL);
  }



  return 0;
}