我在使用安全多方计算的程序中有以下代码片段:
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