sizeofとstrlenの違い、スレッドとプロセスの違い

sizeofとstrlenの違い:

1.本質的な違い:sizeofは演算子、strlenは関数です。

2. sizeofのパラメーターは、型、変数、関数のいずれかです。関数の場合は、関数の戻り値のサイズを返します。strlenのパラメーターは文字列のみで、 '\ 0'で終わる文字列。 '\ 0'に達したときに文字列の長さを返します。

3.配列名をsizeofパラメーターとして使用する場合、ポインターから縮退しません。sizeofは、メモリ内の型のサイズを計算するために使用されます。パラメータが文字列の場合、ポインタのメモリサイズが計算されます。つまり、strlenとしての4バイト配列名のパラメータがポインタに縮退します。この関数は、配列の最初の要素のアドレスから、 '\ 0'に遭遇します。

4. Sizeofは静的配列の次元のみを計算できますが、動的配列は計算できません。配列が関数パラメーターとして渡されると、配列の代わりにポインターが渡されます。

スレッドとプロセスの違い:

スレッド:スレッドは、CPUスケジューリングの最小単位であり、プロセス内のエンティティです。スレッドはシステムリソースを所有しませんが、実行時に必要なリソースのみを占有します。プロセスが所有するすべてのリソースを、プロセスに属する他のスレッドと共有できます。同じプロセス。各スレッドには、独自の独立した実行スタックとプログラムカウンターがあります。スレッドは別のスレッドを作成およびキャンセルでき、同じプロセス内のスレッドは同時に実行できます。

スレッドの利点:

(1)発送が簡単

(2)並行性。プロセスは、複数のスレッドを介してプログラムのさまざまな部分を実行できます。

(3)リソース使用率が低く(オーバーヘッドが少ない)、スレッドの作成はプロセスの作成よりも高速です。

(4)マルチプロセッサの役割を十分に発揮でき、プログラムを同時に実行する場合は、各プロセッサを使用できます。

プロセスプロセス内のリソース割り当ての最小単位。各プロセスには、独自の独立したコードとデータスペースがあります。プロセスには複数のスレッドを含めることができます。

スレッドとプロセスの5つの段階:作成、準備、実行、ブロック、および終了。

プロセスにはメインスレッドがあり、メインスレッドの終了はプロセスの終了を意味します。メインスレッドは他の子スレッドを作成できます。

スレッドとプロセスの関係:

(1)スレッドは1つのプロセスにのみ属することができ、プロセスは複数のスレッドを持つことができます。

(2)プロセスが所有するリソースは、同じプロセス内のすべてのスレッドによって共有されます。

(3)プロセッサで実際に実行されているのはスレッドです。

(4)スレッドは、実行中に同期および相互排除操作を行う必要があります。メッセージ通信を使用します。

スレッドとプロセスの違い:

(1)スケジューリング;スレッドはスケジューリングの基本単位であり、プロセスはリソースの基本単位です

(2)並行性;プロセスは同時に実行でき、同じプロセスの異なるスレッドも同時に実行できます。

(3)リソースの問題。プロセスはリソースを所有できます。スレッドはリソースを占有しませんが、プロセスのすべてのリソースにアクセスできます。

(4)システムオーバーヘッド:プロセスを作成および取り消す場合、システムオーバーヘッドは明らかにスレッドオーバーヘッドよりも大きくなります。

おすすめ

転載: blog.csdn.net/Gunanhuai/article/details/114649546