Simple usage

suggest change

Common usage of lock is a critical section.

In the following example ReserveRoom is supposed to be called from different threads. Synchronization with lock is the simplest way to prevent race condition here. Method body is surrounded with lock which ensures that two or more threads cannot execute it simultaneously.

public class Hotel
{
    private readonly object _roomLock = new object();

    public void ReserveRoom(int roomNumber)
    {
        // lock keyword ensures that only one thread executes critical section at once
        // in this case, reserves a hotel room of given number
        // preventing double bookings
        lock (_roomLock)
        {
            // reserve room logic goes here
        }
    }
}

If a thread reaches lock-ed block while another thread is running within it, the former will wait another to exit the block.

Best practice is to define a private object to lock on, or a private static object variable to protect data common to all instances.

Feedback about page:

Feedback:
Optional: your email if you want me to get back to you:



Table Of Contents