6

オリベイラとスチュワートの「WritingScientificSoftware」という本を読んで、私はこの興味深い一節に出くわしました。

共有変数は危険であり、共有ライブラリでは避ける必要があります

したがって、共有ライブラリまたはダイナミックリンクライブラリを作成している場合は、staticローカルsaved変数を避け、グローバル変数を避けてください。」

(55ページ)

しかし、staticメンバー関数はどうですか?これらは共有ライブラリでも同様に危険ですか?これらも避けるべきですか?なぜ/なぜそうではないのですか?

4

3 に答える 3

4

しかし、staticメンバー関数はどうでしょうか? これらは共有ライブラリでも同様に危険ですか?

まったくありません:staticメンバー関数は避けるべきではありません:static共有状態を表す変数とは異なり、staticメンバー関数は共有計算を表します。これらの計算がステートレスである限り、まったく危険ではありません。

于 2012-11-06T05:27:28.487 に答える
3

静的関数は問題ありません。実際、科学ソフトウェアで一般的に使用される関数の多くは、 、sin()sqrt()などの純粋な数学関数log()です。

一方、静的変数は共有状態の指標であり、避ける必要があります。

于 2012-11-06T05:25:42.687 に答える
1

本質的ではありません。静的状態を使用しない静的メンバー関数 (ローカル変数またはスレッド ローカル変数のみを使用する関数など) は安全ではありません。このようなメソッドは、boost や guava (Java の世界の最後の例) などのよく知られたライブラリで頻繁に使用されます。

于 2012-11-06T05:26:44.543 に答える