私はCでコマンドライン引数として任意の数のファイルをとり、すべてのファイルに対してsha1sumを計算するプログラムを持っています。私は4つすべてのコアを利用できるように、pthreadを使用しています。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つのスレッドを開始し、完了するとすぐにスレッドを新しいスレッドに "置き換える"必要があります。
どうすればいいですか?