7

再入可能コードを作成する際の推奨プラクティスに関する再入可能ガイドを調べていました。

このトピックを扱っている他の参考文献やリソースは?

これらの問題をチェックするために使用できるリントのようなツールは何ですか?

4

4 に答える 4

2
  • ローカル変数を使用してください。
  • 静的なローカル変数やグローバル変数を使用しないでください。たとえ TLS が再帰/再入可能性に役立たないとしてもです。
  • コールバックを行う前に、すべての不変条件を復元してください。
  • コールバックを行っている間はロックを保持しないでください。絶対に必要な場合 (そして、私はそれを回避する方法を探しに行きます)、既にロックを保持しているスレッドにロックを再入力しようとするとどうなるかを確認してください。少なくとも、これをテストする必要があります。そうしないと、ロックによっては、デッドロックや壊れた不変条件 (つまり、破損) が発生します。
于 2010-07-14T02:14:00.213 に答える
1

本当になし。通常、再入力しないコードを書くことは、再入力するよりも困難です。これらの簡単なガイドラインに従うだけで、あまりにも気まぐれなことをしようとしないでください。

非再入力コードは、通常、高性能の問題のために作成されます。

于 2010-07-13T18:44:12.243 に答える
0

ガイドで十分です。

私の個人的な経験則は、コードを再入力するための 2 つのみです。

  1. 値パラメーターのみを受け取り、関数でパラメーターとして渡された値のみを使用します。

  2. グローバル パラメーターまたはポインターを使用する必要がある場合 (パフォーマンスまたはストレージのために)、ミューテックスまたはセマフォを使用してアクセスを制御します。

于 2010-07-14T02:04:16.713 に答える
0
  1. 再入可能関数は、変数が呼び出し元のタスクのスタックに格納されているか、そのタスクのプライベート変数でない限り、非アトミックな方法で変数を使用することはできません。
  2. 再入可能関数は、再入可能でない他の関数を呼び出すことはできません。
  3. 再入可能関数は、非アトミックな方法でハードウェアを使用することはできません。

参照: 462 ページ [AN INTRODUCTION USING THE RENESAS RX62N MICROCONTROLLER] [James M. Conrad]

于 2014-10-09T15:20:40.387 に答える