Fan.Sys.Actor._enqueue C# (CSharp) Method

_enqueue() private method

private _enqueue ( Future f, bool coalesce ) : Future
f Future
coalesce bool
return Future
        internal Future _enqueue(Future f, bool coalesce)
        {
            lock (m_lock)
              {
            // attempt to coalesce
            if (coalesce)
            {
              Future c = m_queue.coalesce(f);
              if (c != null) return c;
            }

            // add to queue
            m_queue.add(f);

            // submit to thread pool if not submitted or current running
            if (!m_submitted)
            {
              m_submitted = true;
              m_pool.submit(this);
            }

            return f;
              }
        }

Usage Example

Example #1
0
        //////////////////////////////////////////////////////////////////////////
        // When Done
        //////////////////////////////////////////////////////////////////////////

        internal void sendWhenDone(Actor a, Future f)
        {
            // if already done, then set immediate flag
            // otherwise add to our when done list
            bool immediate = false;

            lock (this)
            {
                if (isDone())
                {
                    immediate = true;
                }
                else
                {
                    if (whenDone == null)
                    {
                        whenDone = new ArrayList();
                    }
                    whenDone.Add(new WhenDone(a, f));
                }
            }

            // if immediate we are already done so enqueue immediately
            if (immediate)
            {
                try { a._enqueue(f, false); }
                catch (System.Exception e) { Err.dumpStack(e); }
            }
        }
All Usage Examples Of Fan.Sys.Actor::_enqueue