1

マルチスレッド環境、特に c で協調的なものを実装する方法について頭を悩ませようとしています (AVR では、興味がないので、この一般的なものを維持したいと思います)。

私の問題は、スレッド スイッチ自体にあります。これをアセンブラーで記述して、すべてのレジスターをスタックにフラッシュし、PC を保存して後で戻ることができると確信しています。

cでこのようなものをどのようにやってのけるのでしょうか? 「なんでもできる」と言われました。

これは非常に一般的な質問であることを認識しているため、このトピックに関する情報へのリンクは大歓迎です。

ありがとう

4

4 に答える 4

1

純粋な C のままにしたい場合は、andを使用できると思います、自分で試したことはありません。おそらく、これが機能しないプラットフォームがいくつかあると思います (つまり、特定のレジスタ/その他の設定が保存されます)。他の唯一の代替手段は、アセンブリで記述することです。setjmplongjmp

于 2013-06-29T15:51:27.393 に答える
0

私の経験では、人々がスケジューラを書き始めると、すぐにネットワーク スタック、メモリ割り当て、ファイル システムなどが必要になります。その道をたどる価値はほとんどありません。実際のアプリケーションに費やす時間よりも、独自のオペレーティング システムの作成に多くの時間を費やすことになります。

あなたのプロジェクトがその方向に向かっている最初の気配であり、ほとんどの場合、既存の OS (Linux、VxWorks など) に投資する価値があります。もちろん、CPU の能力が十分でない場合、問題が発生する可能性があります。また、AVR は正確には CPU のすべてではなく、既存の OS をそれに適合させることは、主要な OS にとってほとんど不可能からトリッキーなものまでさまざまです。 .org/wiki/List_of_real-time_operating_systems )。

そのため、プロジェクトの開始時に、将来どのように進化させたいかを慎重に検討する必要があります。これは、後でソフトウェアで恐ろしいことをしなければならないことを避けるために、現在の CPU の選択に影響を与える可能性があります。

于 2013-09-06T03:52:59.947 に答える