private void workerThread() { D.Say(10, "starting working thread"); while (true) { D.Say(10, string.Format("worker going to sleep; queue count {0}", this.priQueue.Count())); this.queueNonemptyEvent.WaitOne(); D.Say(10, "worker waking up"); QueueRequestIfc queueRequestIfc = this.Dequeue(); if (queueRequestIfc == null) { D.Sayf(10, "Worker thread continuing after apparent queue cancellation; queuelen {0}", new object[] { this.priQueue.Count() }); } else { if (queueRequestIfc is QueueSuicideRequest) { break; } D.Sayf(10, "Processing {0}", new object[] { queueRequestIfc }); queueRequestIfc.DoWork(); D.Sayf(10, "done with {0}", new object[] { queueRequestIfc }); } } D.Say(3, "worker thread exiting"); }
public void enqueueTileRequest(QueueRequestIfc qr) { this.enqueueTileRequests(new QueueRequestIfc[] { qr }); }
public void Enqueue(QueueRequestIfc qr) { Monitor.Enter(this); try { QueuedTileProvider.QueueRequestCell queueRequestCell = new QueuedTileProvider.QueueRequestCell(); queueRequestCell.qr = qr; queueRequestCell.queuedInterest = qr.GetInterest(); this.cellMap.Add(qr, queueRequestCell); this.queue.Add(queueRequestCell, qr); this.UpdateDebugList(); } finally { Monitor.Exit(this); } }
public void Enqueue(QueueRequestIfc qr) { Monitor.Enter(this); try { QueuedTileProvider.QueueRequestCell queueRequestCell = new QueuedTileProvider.QueueRequestCell(); queueRequestCell.qr = qr; queueRequestCell.queuedInterest = qr.GetInterest(); this.cellMap.Add(qr, queueRequestCell); this.queue.Add(queueRequestCell, qr); this.UpdateDebugList(); } finally { Monitor.Exit(this); } }
public void ChangePriority(QueueRequestIfc qr) { Monitor.Enter(this); try { if (this.cellMap.ContainsKey(qr)) { QueuedTileProvider.QueueRequestCell key = this.cellMap[qr]; this.queue.Remove(key); this.cellMap.Remove(qr); this.Enqueue(qr); this.UpdateDebugList(); } } finally { Monitor.Exit(this); } }
public void ChangePriority(QueueRequestIfc qr) { Monitor.Enter(this); try { if (cellMap.ContainsKey(qr)) { QueueRequestCell key = cellMap[qr]; queue.Remove(key); cellMap.Remove(qr); Enqueue(qr); UpdateDebugList(); } } finally { Monitor.Exit(this); } }
public void enqueueTileRequests(QueueRequestIfc[] qrlist) { QueuedTileProvider.PriQueue obj; Monitor.Enter(obj = this.priQueue); try { for (int i = 0; i < qrlist.Length; i++) { QueueRequestIfc queueRequestIfc = qrlist[i]; D.Say(10, string.Format("Queueing req {0}", queueRequestIfc.ToString())); this.priQueue.Enqueue(queueRequestIfc); } this.priQueue.TruncateQueue(QueuedTileProvider.MAX_QLEN); this.queueNonemptyEvent.Set(); } finally { Monitor.Exit(obj); } }
private QueueRequestIfc Dequeue() { QueuedTileProvider.PriQueue obj; Monitor.Enter(obj = this.priQueue); QueueRequestIfc result; try { QueueRequestIfc queueRequestIfc = this.priQueue.Dequeue(); if (queueRequestIfc == null) { this.queueNonemptyEvent.Reset(); } result = queueRequestIfc; } finally { Monitor.Exit(obj); } return(result); }
private QueueRequestIfc Dequeue() { PriQueue obj; Monitor.Enter(obj = priQueue); QueueRequestIfc result; try { QueueRequestIfc queueRequestIfc = priQueue.Dequeue(); if (queueRequestIfc == null) { queueNonemptyEvent.Reset(); } result = queueRequestIfc; } finally { Monitor.Exit(obj); } return(result); }
public void ChangePriority(QueueRequestIfc qr) { this.priQueue.ChangePriority(qr); }
public void enqueueTileRequest(QueueRequestIfc qr) { this.enqueueTileRequests(new QueueRequestIfc[] { qr }); }
public void enqueueTileRequests(QueueRequestIfc[] qrlist) { QueuedTileProvider.PriQueue obj; Monitor.Enter(obj = this.priQueue); try { for (int i = 0; i < qrlist.Length; i++) { QueueRequestIfc queueRequestIfc = qrlist[i]; D.Say(10, string.Format("Queueing req {0}", queueRequestIfc.ToString())); this.priQueue.Enqueue(queueRequestIfc); } this.priQueue.TruncateQueue(QueuedTileProvider.MAX_QLEN); this.queueNonemptyEvent.Set(); } finally { Monitor.Exit(obj); } }
public void ChangePriority(QueueRequestIfc qr) { this.priQueue.ChangePriority(qr); }
public void ChangePriority(QueueRequestIfc qr) { Monitor.Enter(this); try { if (this.cellMap.ContainsKey(qr)) { QueuedTileProvider.QueueRequestCell key = this.cellMap[qr]; this.queue.Remove(key); this.cellMap.Remove(qr); this.Enqueue(qr); this.UpdateDebugList(); } } finally { Monitor.Exit(this); } }
public void enqueueTileRequest(QueueRequestIfc qr) { enqueueTileRequests(new[] { qr }); }