GNU/Linux >> Linux の 問題 >  >> Linux

プロセスとスレッドの数を制限すると、GNU/Linux はプロセスとスレッドを一緒にカウントしますか?

nproc あなたが話している制限は、実行可能なエンティティに適用されます 、したがって、スレッド(したがって、それらを含むプロセス)を制限しています .すべてのプロセスには少なくとも 1 つのスレッド (プライマリ スレッド) があるため、スレッドのみを実行できます。 .厳密に言えば、プロセスは「実行可能」ではありません。

この回答は、Linux におけるスレッドとプロセスの実際の違いを説明しています。

daya でコードをテストしました の答え( sleep(1); も追加) スレッドコードで) そして彼とは異なり (?!)、あまりにも多くのスレッドが作成されたときに制限に達しました:pthread_create() EAGAIN を返していました . pthread_create(3) ドキュメントには、このエラーについて次のように記載されています:

<ブロック引用>

再び

別のスレッドを作成するためのリソースが不足しているか、システムが課したスレッド数の制限に達しました。後者のケースは 2 つの方法で発生する可能性があります。実ユーザー ID のプロセス数を制限する RLIMIT_NPROC ソフト リソース制限 (setrlimit(2) で設定) に達した。または、カーネルのシステム全体のスレッド数の制限 /proc/sys/kernel/threads-max に達しました。

具体的なについて言及されていません カーネル ソースのスレッドごとの制限、RLIMIT_NPROC しか表示されない これは limits.conf で変更できる制限です (nproc の場合) )、ulimit -u または setrlimit(2) .


Linux
  1. Linux:ゾンビ プロセスを見つけて強制終了する

  2. Linux のプロセスあたりの最大スレッド数は?

  3. bash および Linux カーネルでの Shebang 行の制限

  1. Linuxでいつpthread_exit()を使用し、いつpthread_join()を使用するのですか?

  2. Linux では、稼働時間はいつからカウントされますか?

  3. スレッドは Linux でプロセスとして実装されますか?

  1. Linuxで開くファイルの数の制限を増やす方法

  2. Linux はスレッドを子プロセスと区別する方法を教えてください。

  3. Linux で送受信の帯域幅と遅延を制限する