スレッド作成が.netmicroフレームワークを実行しているnetduinoにどのような影響を与えるのか興味がありました。スレッドには固有のオーバーヘッドがあることは一般的に理解されていますが、組み込み環境で.net microの最適化があるかどうかを誰かが知っているかどうか、そしてスレッドの内部で何が起こるかについて誰かが私に詳細を教えてくれるかどうか疑問に思いましたここ(割り当てられるメモリの量、生成にかかるサイクル数など)。
1 に答える
私の経験では、NETMFではスレッドごとに約1Kのメモリコストがかかります。スレッドの割り当てに必要な時間については、そのような質問を検討している場合は、組み込みシステムのベストプラクティスを少し読んでみてください。私はあなたをからかっていません、あなたの心の痛みと煩わしさを救うことができるかなりの苦労して獲得した伝承があります。適切な例、スレッドのこと。信頼性が必要な場合は、最大のリソース需要を保証する必要があります。「5つ以下のスレッド」と言う場合は、初期化プロセスの一部として5つすべてを開始し、必要なすべてのリソースを割り当てることもできます。それができない場合は、負荷がかかった状態でのシステムの安定性を保証できません。
コンテキスト切り替えにはオーバーヘッドがあります。ベンチマークを行う必要がなかったため、定量化された数値を提供することはできません。NETMFは金属上に実装されています。おそらく、ATMELからダウンロードできるSoCドキュメントからいくつかの洞察を得ることができます。または、netduinoフォーラムで質問した場合、クリスがカフからあなたに話すことができる可能性はかなりあります。
これが宿題の質問である場合は、ハンスのアドバイスを受けて、ソースコードを見てください。何かを構築し、アプリケーションに対するプラットフォームの適合性を評価する場合は、異なるスレッドでタイミングに敏感なことを行うときにスイッチングラグに悩まされたことはないかもしれませんが、3つまたは4つ以上のスレッドを使用することはありません。それらの1つは、ラウンドロビン方式で多数の論理プロセス(すべてのタイミングに依存しないもの)にサービスを提供します。
繰り返しになりますが、長期的な安定性の鍵は、何かの動的な割り当てを回避することです。
明示的にコーディングされたラウンドロビンの利点は、論理プロセスのシーケンスを制御できることです。