System.Threading.ReaderWriterLock.ReaderWriterLock.AcquireWriterLock C# (CSharp) Method

AcquireWriterLock() private method

private AcquireWriterLock ( int millisecondsTimeout, int initialLockCount ) : void
millisecondsTimeout int
initialLockCount int
return void
		void AcquireWriterLock (int millisecondsTimeout, int initialLockCount)
		{
			lock (this) {
				if (HasWriterLock ()) {
					state--;
					return;
				}
				
				// wait while there are reader locks or another writer lock, or
				// other threads waiting for the writer lock
				if (state != 0 || !writer_queue.IsEmpty) {
					do {
						if (!writer_queue.Wait (millisecondsTimeout))
							throw new ApplicationException ("Timeout expired");
					} while (state != 0);
				}

				state = -initialLockCount;
				writer_lock_owner = Thread.CurrentThreadId;
				seq_num++;
			}
		}

Same methods

ReaderWriterLock.ReaderWriterLock::AcquireWriterLock ( TimeSpan timeout ) : void
ReaderWriterLock.ReaderWriterLock::AcquireWriterLock ( int millisecondsTimeout ) : void