C# Class Microsoft.Common.Core.Threading.AsyncReaderWriterLock.Queue

Mostrar archivo Open project: Microsoft/RTVS

Public Methods

Method Description
AddExclusiveReader ( ExclusiveReaderLockSource item, bool &isAddedAfterWriterOrExclusiveReader ) : void

Adds a reader from exclusive reader lock

1. _wTail erlTail ↓ ↓ R−→R−→R ―► R−→R−→R−→E ↑ ↑ _tail _tail 2. _wTail _wTail erlTail ↓ ↓ ↓ R−→R−→W ―► R−→R−→W−→E ↑ ↑ _tail _tail 3. _wTail _wTail erlTail ↓ ↓ ↓ R−→W−→W−→R−→R ―► R−→W−→W−→R−→R−→E ↑ ↑ _tail _tail 4. _wTail _tail _wTail _tail ↓ ↓ ↓ ↓ R−→W−→W−→E−→R ―► R−→W−→W−→E−→E−→R ↑ ↑ erlTail erlTail

AddReader ( LockSource item, bool &isAddedAfterWriter ) : void

Adds a reader item

1. R−→R−→R ―► R−→R−→R−→R ↑ ↑ _tail _tail 2. _wTail _wTail ↓ ↓ R−→R−→W ―► R−→R−→W−→R ↑ ↑ _tail _tail 3. _wTail _wTail ↓ ↓ R−→W−→W−→R ―► R−→W−→W−→R−→R ↑ ↑ _tail _tail

AddWriter ( LockSource item, bool &isFirstWriter ) : void

Adds a writer item

1. _wTail ↓ R−→R−→R ―► R−→R−→R−→W ↑ ↑ _tail _tail 2. _wTail _wTail ↓ ↓ R−→R−→W ―► R−→R−→W−→W ↑ ↑ _tail _tail 3. _wTail _wTail ↓ ↓ R−→W−→W−→R ―► R−→W−→W−→W−→R ↑ ↑ _tail _tail

Remove ( LockSource item ) : LockSource[]

Private Methods

Method Description
FilterAndCopyToArray ( LockSource start ) : LockSource[]
FindFirstExclusiveReader ( ExclusiveReaderLock erLock ) : LockSource[]
Link ( LockSource previous, LockSource next ) : void
ReaderCanBeReleased ( LockSource source ) : bool
Unlink ( LockSource item ) : void
UpdateTail ( LockSource item ) : void

Method Details

AddExclusiveReader() public method

Adds a reader from exclusive reader lock
1. _wTail erlTail ↓ ↓ R−→R−→R ―► R−→R−→R−→E ↑ ↑ _tail _tail 2. _wTail _wTail erlTail ↓ ↓ ↓ R−→R−→W ―► R−→R−→W−→E ↑ ↑ _tail _tail 3. _wTail _wTail erlTail ↓ ↓ ↓ R−→W−→W−→R−→R ―► R−→W−→W−→R−→R−→E ↑ ↑ _tail _tail 4. _wTail _tail _wTail _tail ↓ ↓ ↓ ↓ R−→W−→W−→E−→R ―► R−→W−→W−→E−→E−→R ↑ ↑ erlTail erlTail
public AddExclusiveReader ( ExclusiveReaderLockSource item, bool &isAddedAfterWriterOrExclusiveReader ) : void
item ExclusiveReaderLockSource
isAddedAfterWriterOrExclusiveReader bool
return void

AddReader() public method

Adds a reader item
1. R−→R−→R ―► R−→R−→R−→R ↑ ↑ _tail _tail 2. _wTail _wTail ↓ ↓ R−→R−→W ―► R−→R−→W−→R ↑ ↑ _tail _tail 3. _wTail _wTail ↓ ↓ R−→W−→W−→R ―► R−→W−→W−→R−→R ↑ ↑ _tail _tail
public AddReader ( LockSource item, bool &isAddedAfterWriter ) : void
item LockSource
isAddedAfterWriter bool
return void

AddWriter() public method

Adds a writer item
1. _wTail ↓ R−→R−→R ―► R−→R−→R−→W ↑ ↑ _tail _tail 2. _wTail _wTail ↓ ↓ R−→R−→W ―► R−→R−→W−→W ↑ ↑ _tail _tail 3. _wTail _wTail ↓ ↓ R−→W−→W−→R ―► R−→W−→W−→W−→R ↑ ↑ _tail _tail
public AddWriter ( LockSource item, bool &isFirstWriter ) : void
item LockSource
isFirstWriter bool
return void

Remove() public method

public Remove ( LockSource item ) : LockSource[]
item LockSource
return LockSource[]