簡體   English   中英

在C中創建N個線程

[英]Creating N threads in C

我試圖以以下方式創建N個線程:主線程創建一個線程,該線程又創建另一個線程,依此類推N次。 那就是主線程的孩子創建一個線程,而那個孩子的孩子創建一個線程,依此類推。 我知道如何做叉

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

有辦法用線程嗎?

閱讀一些pthread教程pthreads(7)

使用pthread_create(3)創建一個線程(它可能會失敗)。 您提供一個例程和一個參數(通常是分配的堆)。 fork

線程例程本身可以調用pthread_create

稍后,您最好在某個地方調用pthread_join(3) (類似於waitpid ),否則請使用pthread_detach(3)

請記住,根據定義,同一進程的所有線程共享一個公共 地址空間 (以及其他內容,例如當前目錄,打開的文件描述符表等)。

順便說一句,您要執行的操作通常不常見且容易出錯。 線程是昂貴的資源! 實際上,您最多應該有幾十個線程(使最大數量可配置,並將其默認為處理器上的內核數量),並且您應該注意同步(使用互斥量和條件變量等)。 您可能希望擁有線程池 另請參閱有關生產者-消費者問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM