< prev index next >

src/hotspot/share/gc/shared/workgroup.hpp

Print this page

        

@@ -50,10 +50,11 @@
 
 class AbstractGangWorker;
 class Semaphore;
 class ThreadClosure;
 class WorkGang;
+class GangTaskDispatcher;
 
 // An abstract task to be worked on by a gang.
 // You subclass this to supply your own work() method
 class AbstractGangTask {
   const char* _name;

@@ -78,33 +79,10 @@
   AbstractGangTask* _task;
   uint              _worker_id;
   WorkData(AbstractGangTask* task, uint worker_id) : _task(task), _worker_id(worker_id) {}
 };
 
-// Interface to handle the synchronization between the coordinator thread and the worker threads,
-// when a task is dispatched out to the worker threads.
-class GangTaskDispatcher : public CHeapObj<mtGC> {
- public:
-  virtual ~GangTaskDispatcher() {}
-
-  // Coordinator API.
-
-  // Distributes the task out to num_workers workers.
-  // Returns when the task has been completed by all workers.
-  virtual void coordinator_execute_on_workers(AbstractGangTask* task, uint num_workers,
-                                              bool add_foreground_work) = 0;
-
-  // Worker API.
-
-  // Waits for a task to become available to the worker.
-  // Returns when the worker has been assigned a task.
-  virtual WorkData worker_wait_for_task() = 0;
-
-  // Signal to the coordinator that the worker is done with the assigned task.
-  virtual void     worker_done_with_task() = 0;
-};
-
 // The work gang is the collection of workers to execute tasks.
 // The number of workers run for a task is "_active_workers"
 // while "_total_workers" is the number of available of workers.
 class AbstractWorkGang : public CHeapObj<mtInternal> {
  protected:
< prev index next >