Kmills94
1/2/2018 - 7:48 PM

Singleton

public class SingletonQueue

{

    private BlockingCollection<string> _queue;

    private static SingletonQueue _instance;

 

    private SingletonQueue() 

    {

        _queue = new BlockingCollection<string>();

    }

 

    [MethodImpl(MethodImplOptions.Synchronized)]

    public static SingletonQueue GetInstance()

    {

        return _instance ?? (_instance = new SingletonQueue());

    }

 

    public void AddToQueue(string s)

    {

        _queue.Add(s);

    }

 

    public string GetFromQueue()

    {

        return _queue.Take();

    }

}

public sealed class SingletonQueue

{

    static readonly object _objectLock = new object();

    private BlockingCollection<string> _queue;

    private static SingletonQueue _instance;

      

    public static SingletonQueue Instance

    {

        get

        {

            lock (_objectLock)

            {

                return _instance ?? (_instance = new SingletonQueue());

            }

        }

    }

 

    private SingletonQueue()

    {

        _queue = new BlockingCollection<string>();

    }

 

    public void AddToQueue(string s)

    {

        _queue.Add(s);

    }

 

    public string GetFromQueue()

    {

        return _queue.Take();

    }

}