Class BlockableChannel
    Package
    
    Multi-producer-multi-consumer (MPMC) channel.
This is a channel that can be used to send data between threads. It is thread safe and can be used by multiple threads at the same time.
Additionally, the channel can be put into a blocking mode, which will cause all calls to Receive to block until the channel is unblocked.
Inner Types
Public Methods
        
                AddReceiver
        
                ()
    
                    
                    
                        Public
                    
                
        
                Close
        
                ()
    
                    
                    All calls to Receive and ReceiveNoBlock will now return PopState.Closed.
                        Public
                    
                
        
                Push
        
                (path)
    
                    
                    Push a path to the end of the queue.
                        Public
                    
                
        
                PushFront
        
                (path)
    
                    
                    Push a path to the front of the queue.
                        Public
                    
                
        
                Reopen
        
                ()
    
                    
                    Resets a closed channel so that it can be used again.
                        Public
                    
                Public Variables
        
                allReceiversBlocked
        
    
                    
                    True if blocking and all receivers are waiting for unblocking.
                        Public
                    
                
        
                isBlocked
        
    
                    
                    If true, all calls to Receive will block until this property is set to false.
                        Public
                    
                
        
                isEmpty
        
    
                    
                    True if the queue is empty.
                        Public
                    
                
        
                numReceivers
        
    
                    
                    
                        Public
                    
                Private/Protected Members
        
                blocked
        
    
                    
                    
                        Private
                    
                
        
                isStarving
        
    
                    
                    
                        Private
                    
                
        
                lockObj
        
    
                    
                    
                        Private
                            Readonly
                    
                
        
                queue
        
    
                    
                    
                        Private
                    
                
        
                starving
        
    
                    
                    
                        Private
                    
                
        
                waitingReceivers
        
    
                    
                    
                        Private