Example #1
0
 public void WaitForOutput()
 {
     m_affinity.Check();
     do
     {
         lock (m_lock)
         {
             if (m_queue.Count > 0)
             {
                 return;
             }
         }
         m_event.WaitOne();
     } while (true);
 }
Example #2
0
        public static Func <TSource, TResult> Memoize <TSource, TResult>(this Func <TSource, TResult> func)
        {
            var affinity = new ThreadAffinity();
            var map      = new Dictionary <TSource, TResult>();

            return(x =>
            {
                affinity.Check();
                TResult result;
                if (!map.TryGetValue(x, out result))
                {
                    result = func(x);
                    map[x] = result;
                }

                return result;
            });
        }