local X in

local Y in

Y = X+1

{Exchange C X Y}

end

end

Now its clear to see that X is unbound and above program will keep on waiting for X to bind(that'll never happen) at line Y=X+1 and will never execute Exchange. Here is the program with a simple fix:

L = {NewLock}

lock L then X Y in

{Exchange C X Y}

Y = X+1

end

II. The simple fix that I have given above will not work in a language that doesn't have dataflow variables because it is *using* dataflow behavior of variable Y to work.

III. Another fix that doesn't use dataflow variables and hence, is possible in a language without dataflow variables:

L = {NewLock}

lock L then

C:=@C+1

end

## No comments:

## Post a Comment