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