问:关于Scoap,Compensation,Catch中的变量作用域!
流程
int g_i = 0;
Message msg;
receive(msg)
scoap
{
scoap
{
g_i=1;
}
Compensation1
{
g_i=2;
print2(g_i)
}
throw exprestion;
}
catch
{
call Compensation1
}
print1(g_i);
问题
按理说,g_i的赋值过程是
g_i=1
进行补偿
g_i=2
但为什么
print1(g_i)=1
print2(g_i)=2
呢。
这是别人问我的问题,自己也没解决!