Collapse All Expand All

C#

Oracle® Coherence .NET API Reference
SynchronizedDictionary..::.AcquireReadLock Method (Int64)
SynchronizedDictionary Class See Also

Oracle® Coherence .NET API Reference Release 3.6.1
E18812-01
Acquire a read lock.

Namespace: Tangosol.Util.Collections
Assembly: Coherence (in Coherence.dll) Version: 3.6.1.0 (3.6.1.0)

# Syntax

C#
    public bool AcquireReadLock(
    	long timeout
    )

#### Parameters

timeout
  Type: System..::.Int64
  Timeout in milliseconds.

#### Return Value

[Missing <returns> documentation for "M:Tangosol.Util.Collections.SynchronizedDictionary.AcquireReadLock(System.Int64)"]

# Remarks

This method will attempt to acquire a read lock for up to timeout milliseconds, and will return a boolean value specifying whether or not the lock was acquired successfully.

Multiple threads can hold read locks at the same time, but no thread will be able to acquire a write lock until all read locks are released.

This method should always be used in combination with a ReleaseReadLock()()() method in the following manner:
CopyC#

    if (dict.AcquireReadLock(timeout))
    {
        try
        {
            // access dictionary
        }
        finally
        {
            dict.ReleaseReadLock();
        }
    }

This will ensure that the dictionary is not accessed unless the lock was acquired successfully, and that the lock is released properly even if an exception is thrown by the code within the try block.

It is entirely up to you how to handle the case when the AcquireReadLock method returns false. For example, you can ignore the fact, throw an exception, or retry the operation by placing the code above within a loop.

# See Also

SynchronizedDictionary Class
AcquireReadLock Overload
Tangosol.Util.Collections Namespace
SynchronizedDictionary..::.AcquireReadLock()()()
SynchronizedDictionary..::.ReleaseReadLock()()()