0

安全なマルチパーティ計算を使用するプログラムに次のコードスニペットがあります。

c = self.runtime.open(b)  # open result
c.addCallback(self.determine) 

j = self.compute(i)
return j

この関数determineは、c の値に応じてブール値を false または true に設定します。このブール値は、関数によって使用されますcompute

プログラムの残りの部分が実行される前に、コールバックが常に最初に実行されると思いました。ただし、computeブール値が定義されていないというエラーが発生します。

が実行される前に コールバックを強制的に実行するにはどうすればよいcomputeですか?

セキュアなマルチパーティ計算フレームワーク内で作業しているため、値cが共有秘密であるため、コールバックを使用する必要があります。ただし、秘密の共有がないと問題が発生することもあると思います。言語はパイソンです。

とのコードは次のようになりますdeterminecompute

def determine(c):
    global computeB
    computeB = False
    if c == 1:
        computeB = True
    else:
        computeB = False
    return c

def compute(i):
    if computeB:
         do this
    else:
         do this
    return result
4

2 に答える 2

0

コールバックは実行時に実行されます。先に実行する「作成」には意味がありません。

私はあなたがツイストを扱っていると思うので、ここにチュートリアルhttp://krondo.com/?page_id=1327がありますが、明らかに必要な非同期プログラミング全般を理解するのにも役立ちます。

于 2013-06-04T13:23:36.330 に答える
0

私は非同期のプロではありませんが、最初の関数を生成し、ルーチンが実行される前に待機するように指示したいと思います。

yield self.runtime.open(b)  # open result

j = self.compute(i)
return j
于 2013-06-04T13:29:16.747 に答える