The Lock method causes the specified server to
enter a locked state where only the current thread may interact with
the server and the clients that are connected to it. While a server
is locked, all other threads will block when they attempt to perform
a network operation. When the server is unlocked, the blocked threads
will resume normal execution.
This method should be used carefully, and a server should never
be left in a locked state for an extended period of time. It is meant
to be used when the server process updates a global data structure
and it must prevent any other threads from performing a network
operation during the update. Only one server can be locked at any one
time, and once a server has been locked, it can only be unlocked by
the same thread.
The program should always check the return value from this
method, and should never assume that the lock has been established.
If more than one thread attempts to lock a server at the same time,
there is no guarantee as to which thread will actually establish the
lock. If a potential deadlock situation is detected, this method
will fail and return a value of zero.
Every time the Lock method is called, an
internal lock counter is incremented, and the lock will not be
released until the lock count drops to zero. This means that each
call to the Lock method must be matched by an equal number of
calls to the Unlock method. Failure to do so will
result in the server becoming non-responsive as it remains in a
locked state.