The server lock would be used at a higher hierarchical level than the project lock mechanism.
It is vitally important that you don't hog a lock on the server object as this can deny server access to all other users
The lock will stall if another script currently has a lock extant on this project. The method will then return when that lock is relinquished.
Locking the server object can lead to severe performance degradation. While it is locked, any lock requests made by other scripts will stall pending the lock being relinquished with an unlock() method call.
You can render your server virtually useless by over-locking the server object. You should aim to relinquish any locks as soon as you possibly can. Ideally you should seek to avoid locking the server object if at all possible.