我有一個C程序,它將任意數量的文件作爲命令行參數,併爲每個文件計算sha1sum。我正在使用pthreads,所以我可以利用所有4個核心。c pthreads:在任何時候同時運行最多4個線程
目前,我的代碼同時並行運行所有線程。 這裏是一個片段:
c = 0;
for (n = optind; n < argc; n++) {
if (pthread_create(&t[c], NULL, &sha1sum, (void *) argv[n])) {
fprintf(stderr, "Error creating thread\n");
return 1;
}
c++;
}
c = 0;
for (n = optind; n < argc; n++) {
pthread_join(t[c], NULL);
c++;
}
顯然,它是有效的(或可擴展),同時啓動所有線程。
什麼是最好的方法來確保,只有4個線程在任何時間運行?不知何故,我需要在開始時啓動4個線程,然後在完成後用新的線程「替換」線程。
我該怎麼做?