the version will deadlock (without Peterson algo and without process list)
our own semaphore without process list
the version use our own semaphore