#region Copyright 2010-2014 by Roger Knapp, Licensed under the Apache License, Version 2.0 /* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #endregion using System; namespace CSharpTest.Net.Synchronization { /// /// An interface that allows reader/writer locking with the using() statement /// public interface ILockStrategy : IDisposable { /// /// Returns a reader lock that can be elevated to a write lock /// ReadLock Read(); /// /// Returns a reader lock that can be elevated to a write lock /// /// ReadLock Read(int timeout); /// /// Returns true if the lock was successfully obtained within the timeout specified /// bool TryRead(int timeout); /// /// Releases a read lock /// void ReleaseRead(); /// /// The the current writer sequence number /// int WriteVersion { get; } /// /// Returns a read and write lock /// WriteLock Write(); /// /// Returns a read and write lock /// /// WriteLock Write(int timeout); /// /// Returns true if the lock was successfully obtained within the timeout specified /// bool TryWrite(int timeout); /// /// Releases a writer lock /// void ReleaseWrite(); } }