Check this input:
Code: Select all
2
2 1 1 1 1 1 1
a = 1
a = 2
a = 3
a = 4
end
print a
print a
print a
print a
end
2 1 1 1 1 1 2
a = 1
a = 2
a = 3
a = 4
end
print a
print a
print a
print a
end
Code: Select all
2: 1
2: 2
2: 3
2: 4
2: 2
2: 2
2: 4
2: 4
Just pay attention to deal with multiple cases.
(1) A blank line to separate different output cases.
(2) Be sure that read the parameters successfully, or you use use the old parameters from previous case and still have code runnable.
(3) Push the front of the block queue to the front of ready queue.
(4) Not to remove the lock instruction if it is blocked. (Next time it should be execute again)
Another input:
Code: Select all
1
10 1 1 1 1 1 1
a = 4
print a
lock
b = 9
print b
unlock
print b
end
a = 3
print a
lock
b = 8
print b
unlock
print b
end
b = 5
a = 17
print a
print b
lock
b = 21
print b
unlock
print b
end
lock
z = 26
y = 25
x = 24
print x
print y
print z
unlock
end
k = 7
lock
k = 9
k = 10
print k
print k
unlock
end
k = 7
lock
k = 9
k = 10
print k
print k
unlock
end
end
k = 7
lock
k = 9
k = 10
print k
print k
unlock
end
k = 7
lock
k = 9
k = 10
print k
print k
unlock
end
k = 7
lock
k = 9
k = 10
print k
print k
unlock
end
Code: Select all
1: 3
2: 3
3: 17
3: 5
4: 24
4: 25
4: 26
5: 10
5: 10
6: 10
6: 10
8: 10
8: 10
9: 10
9: 10
10: 10
10: 10
1: 9
1: 9
2: 8
2: 8
3: 21
3: 21