Exemplo n.º 1
0
 /// <summary>
 /// 取出任务
 /// </summary>
 /// <returns></returns>
 public TaskID <T> PullTask()
 {
     // 先检查分流容器是否空,空则创建
     if (TaskDiverter == null)
     {
         TaskDiverter = new ConcurrentQueue <TaskID <T> >();
         return(null);
     }
     if (TaskDiverter.TryDequeue(out TaskID <T> out_task))
     {
         Interlocked.Decrement(ref this.diverterCount);
         return(out_task);
     }
     return(null);
 }
Exemplo n.º 2
0
 /// <summary>
 /// 向容器内推送任务数据,数据带有任务id
 /// </summary>
 /// <param name="task"></param>
 /// <returns></returns>
 public BaseDiverter <T> PushTask(TaskID <T> task)
 {
     // 无传入数据不处理
     if (task == null)
     {
         return(this);
     }
     // 先检查分流容器是否空,空则创建
     if (TaskDiverter == null)
     {
         TaskDiverter = new ConcurrentQueue <TaskID <T> >();
     }
     //
     TaskDiverter.Enqueue(task);
     Interlocked.Increment(ref this.diverterCount);
     return(this);
 }
Exemplo n.º 3
0
        /// <summary>
        /// 向容器内推送任务数据
        /// </summary>
        /// <param name="task"></param>
        /// <returns></returns>
        public BaseDiverter <T> PushTask(T task)
        {
            // 无传入数据不处理
            if (task == null)
            {
                return(this);
            }
            // 先检查分流容器是否空,空则创建
            if (TaskDiverter == null)
            {
                TaskDiverter = new ConcurrentQueue <TaskID <T> >();
            }
            // 创建新任务
            var new_task = new TaskID <T>()
            {
                TaskPID = 0, TaskData = task
            };

            TaskDiverter.Enqueue(new_task);
            Interlocked.Increment(ref this.diverterCount);
            return(this);
        }