Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

Cのプロセス内で作成できるスレッドの最大数


与えられたタスクは、プロセスinC内で作成できるスレッドの最大数を見つけることです。

スレッドは軽量プロセスであり、スケジューラーによって独立して管理できます。スレッドはプロセスのコンポーネントであるため、複数のスレッドをプロセスに関連付けることができます。また、プロセスよりも軽いため、コンテキストの切り替えにかかる時間が短縮されます。

スレッドはプロセスよりも必要なリソースが少なく、ピアスレッドとメモリを共有します。すべてのユーザーレベルのピアスレッドは、オペレーティングシステムによって単一のタスクとして扱われます。それらの作成と終了に必要な時間は短くなります。

プログラムが実行されるたびに、出力は常に異なります。

以下のプログラムで使用されるアプローチは次のとおりです

  • スレッドの動作を示すだけなので、関数void * create(void *)を作成し、空のままにします。

  • main()関数で、2つの変数max=0とret=0を初期化します。どちらもint型で、それぞれ最大スレッド数と戻り値を格納します。

  • タイプpthread_tの変数「th」を宣言します。

  • 条件ret==0でwhileループを実行し、ret =pthread_create(&th、NULL、create、NULL);

    を配置します。
  • ループ内でmax++を繰り返します。

  • ループの外側で最大値を出力します。

#include<pthread.h>
#include<stdio.h>
/*Leave the function empty as it
only demonstrates work of thread*/
void *create ( void *){
}
//main function
int main(){
   int max = 0, ret = 0;
   pthread_t th;
   //Iterate until 0 is returned
   while (ret == 0){
      ret = pthread_create (&th, NULL, create, NULL);
      max++;
   }
   printf(" %d ", max);
}

出力

5741

  1. C++でN*Nチェス盤に配置できる最大のビショップ

    チェス盤のサイズを示す入力Nが与えられます。ここでのタスクは、Nの任意の値について、2人のビショップが互いに攻撃できないようにNXNチェス盤に配置できるビショップの数を見つけることです。例を挙げて理解しましょう。 入力 − n =2 出力 − N * Nチェス盤に配置できる最大のビショップ− 2(上記のように) 説明 −上に示したように、矛盾しない位置は司教が配置されている場所だけです。せいぜい2X2チェス盤のビショップ。 入力 − n =5 出力 − N * Nチェス盤に配置できる最大ビショップ:8(上記のように) 以下のプログラムで使用されているアプローチは次のとおりで

  2. C++で直角二等辺三角形に収まる正方形の最大数

    与えられたタスクは、底辺が「s」の二等辺三角形の中に収まる、辺が「a」の正方形の最大数を見つけることです(二等辺三角形には少なくとも2つの等しい辺があります)。 例を使用して、私たちがしなければならないことを理解しましょう: 入力 s=5, a=1 出力 10 説明 −基数の平方数は、sをaで割り、1を引くことで計算できます。したがって、基数の平方数=5/1 – 1 =4 同様に、下の4つの正方形を配置すると、base(s-a)の新しい二等辺三角形が得られます。次に同じ手順を繰り返して3つの正方形を取得し、1つの正方形が上に配置されるまで続けます。 入力 s=7, a=2 出力