0

我在使用安全多方计算的程序中有以下代码片段:

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

j = self.compute(i)
return j

现在该函数determine将布尔值设置为 false 或 true,具体取决于 c 的值。该布尔值随后由函数使用compute

我认为回调总是首先执行,在程序的其余部分之前。但是,我收到一个错误,compute即布尔值未定义。

如何在执行之前 compute强制执行回调?

因为我在一个安全的多方计算框架中工作,所以我必须使用回调,因为 for 的值c是一个共享的秘密。但是,我认为如果没有秘密共享,问题也会出现。语言是 Python。

determine和的代码compute是这样的:

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 回答