1

特定のクレーム情報にアクセスするときに呼び出される.gsクラスに以下の関数があります-

public static function testVisibility(claim : Claim) : boolean {
    if(claim.State == ClaimState.TC_OPEN){
        return true;
    }
    else{
        return false;
    }
}

私の質問 -

a) 2 人のユーザーがそれぞれのクレーム情報にアクセスしている場合、この関数は 2 回呼び出される必要があります。1 回目は最初のユーザーの Claim インスタンスを受け取り、2 回目は 2 番目のユーザーの Claim インスタンスを受け取ります。同時アクセスの場合 - 同じ関数の 2 つのコピーが呼び出されますか? 静的関数は 1 つのコピーにすぎないため、そうではありません。では、それが 1 つのコピーである場合、スレッド セーフはどのように確保されるのでしょうか。関数は次々に呼び出されますか?

b) Java と同様に、Gosuもヒープを使用して静的関数を実行しますか?

4

2 に答える 2

4

ここでの定義について少し混乱しているようです。スレッドセーフは、スレッド間で共有されるデータの整合性を保護するために作成されたメカニズムにすぎません。したがって、静的であるかどうかに関係なく、サンプル関数はスレッドセーフです。

a) 上記の理由により、2 つの異なるデータ セットを使用しているため、ここではスレッド セーフの問題はありません。

b) Gosu が JVM で実行され、.class ファイルを生成するように構築されている場合、ほとんどの部分 (100% ではないにしても、構文以外)はJava のように動作すると思います。

于 2015-05-27T01:18:31.583 に答える