在C中创建N个线程

时间:2014-11-02 20:40:06

标签: c multithreading pthreads

我尝试以下列方式创建N个线程: 主线程创建一个线程,然后创建另一个线程,等等N次。也就是主线程的子节点创建一个线程,该子节点的子节点创建一个线程,依此类推。我明白怎么做叉子

     int p;
     int i=1; int N = 10;
     do {
         p = fork() ;
     } while ((p ==0) && (++i<=N));

有没有办法用线程做到这一点?

1 个答案:

答案 0 :(得分:4)

阅读一些pthread tutorial&amp; pthreads(7)

您创建了一个pthread_create(3)的线程(它可能会失败)。你给一个例程和一个参数(通常是堆分配的)。与fork类比。

线程例程本身可以调用pthread_create

稍后,您最好在某个地方致电pthread_join(3)(与waitpid类似),或者使用pthread_detach(3)

请注意,根据定义,同一threads的所有process共享 common address space(以及当前目录,打开的文件描述符表等其他内容) ...)

顺便说一句,你想做的事情通常不常见且容易出错。线程是昂贵的资源!在实践中,您最多应该有几十个线程(使最大可配置,并将其默认为处理器上的核心数),您应该关心同步(使用互斥和条件变量等)。您可能想拥有thread pool。另请阅读producer-consumer problem