Hello
I am playing around with Semaphore, and wrote the following:
| coll count sem |
coll := Array withAll: (1 to: 100).
count := 0.
sem := Semaphore new.
coll do: [ :each |
������ count := count + 1.
������ (count >= 5)
������ ������ ifTrue: [ ������
������ ������ ������ Transcript show: 'waiting...'; cr.
������ ������ ������ sem wait ].
������ ������
������ [ [ 2 seconds asDelay wait.
������ ������ ��Transcript show: each printString, ' ', count printString; cr ] ensure: [��
������ ������ ������ count := count -1.
������ ������ ������ sem signal ] ] fork ]
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...
waiting...