public MergeSortTask(int[] array, int start, int end, MergeSortTask parent)
 {
     m_array   = array;
     m_start   = start;
     m_end     = end;
     m_parent  = parent;
     m_counter = 2;
 }
 public void Execute(Processor processor)
 {
     if (m_end - m_start > 128)
     {
         int           middle = (m_start + m_end) / 2;
         MergeSortTask left   = new MergeSortTask(m_array, m_start, middle, this);
         MergeSortTask right  = new MergeSortTask(m_array, middle + 1, m_end, this);
         processor.EnqueueTask(left);
         processor.EnqueueTask(right);
     }
     else
     {
         MergeSort.Sort(m_array, m_start, m_end);
         SignalTaskDone(processor);
     }
 }