0

スレッドと軽量スレッドの違いがよくわかりません。API の観点から見ると、両方のタイプのスレッドは同一であるため、違いはどこにあるのでしょうか。OS スレッド スケジューラよりも高レベルのランタイムによって軽量スレッドが管理される実装レベルにあるのでしょうか、それとも別のものでしょうか? また、特定のシナリオで使用するスレッドの種類を決定するために人々が使用するヒューリスティックのセットはありますか?

4

1 に答える 1

1

どのコンテキストで、軽量スレッドはライブラリによって実装されるスレッドを表すことができますか?これの利点は、コンテキストの切り替えがライブラリで処理されるため、データの処理が完了したときに切り替えることができるため、次にこの軽量スレッドがアクティブになったときにデータを CPU のキャッシュにロードし直す必要がないことです。

軽量スレッドは、協調スレッド (またはファイバー) を指すこともあります。これらは、他の軽量スレッドにチャンスを与えるために明示的に譲らなければならないスレッドです。これには、既知の場所でコンテキストの切り替えが発生する可能性があるという同じ利点があります。一部のデータの処理が完了したため、再度必要ないことがわかります。

あるいは、軽量スレッドは通常の OS スレッドを意味し、非軽量スレッドはプロセスを意味する可能性があります。プロセスには少なくとも 1 つのスレッドがあり、独自のメモリやその他のリソースもあります。スレッド間でデータを共有できないため、スレッドよりも高価です。 OS がプロセスを作成するには、よりコストのかかる操作になる可能性があります。

于 2012-09-13T04:48:08.387 に答える