code: function(queueCount) {
      var self = this;
      this.queueCount = queueCount;
      this.emitter = new EventEmitter();
      this.processedCount = 0;
  
      // we assume the queue count is 1
      // if developer pass no `queueCount`
      // param
      if(undefined === queueCount) {
          this.queueCount = 1;
      }
  
      // The listener of task done
      this.emitter.on("done", function(queueId, debugStr) {
          queueId = parseInt(queueId);
          if(isNaN(queueId)) return;
          if(queueId >= self.queueCount || queueId < 0) return;
  
          if(debugStr) {
              var logStr = "( Done: ";
              for(var i = 0; i < self.queue.length; i++) {
                  if(i !== 0) logStr += ", ";
                  logStr += "[" + self.queue[i].length + "]";
              }
              logStr += " )";
              console.log(logStr);
          }
  
          nextTick(function() {
              self._runTask(queueId);
          });
      });
  
      // initialize the tast queue into a
      // two-dimensional array
      this.queue = [];
      this.running = [];
      for(var i = 0; i < this.queueCount; i++) {
          this.queue.push([]);
          this.running.push(false);
      }
  
      // after finish
      this.afterFinishCount = -1;
      this.afterFinishLoop = false;
      this.afterFinishProcessor = undefined;
  }
docs: TaskQueue
  @constructor
  @param {Number} queueCount the queue count