给出一个并发程序的描述:
semaphore X1=X2=Y=1;
int c1=c2=0;
procedure f1:
p(X1)
if(++c1=1)  p(Y)
v(X1)
compute A
p(X1)
if(--c1=0) v(Y)
v(X1)
procedure f2:
p(X2)
if(++c2=1) p(Y)
v(X2)
compute B
p(X2)
if (--c2=0) v(Y)
v(X2)
问compute A和compute B各自能有多少并发执行,会不会出现饿死?