< prev index next >

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

Print this page

        

*** 445,456 **** // A class to aid in the termination of a set of parallel tasks using // TaskQueueSet's for work stealing. #undef TRACESPINNING ! class ParallelTaskTerminator: public StackObj { ! private: uint _n_threads; TaskQueueSetSuper* _queue_set; volatile uint _offered_termination; #ifdef TRACESPINNING --- 445,456 ---- // A class to aid in the termination of a set of parallel tasks using // TaskQueueSet's for work stealing. #undef TRACESPINNING ! class ParallelTaskTerminator: public CHeapObj<mtGC> { ! protected: uint _n_threads; TaskQueueSetSuper* _queue_set; volatile uint _offered_termination; #ifdef TRACESPINNING
*** 479,489 **** } // As above, but it also terminates if the should_exit_termination() // method of the terminator parameter returns true. If terminator is // NULL, then it is ignored. ! bool offer_termination(TerminatorTerminator* terminator); // Reset the terminator, so that it may be reused again. // The caller is responsible for ensuring that this is done // in an MT-safe manner, once the previous round of use of // the terminator is finished. --- 479,489 ---- } // As above, but it also terminates if the should_exit_termination() // method of the terminator parameter returns true. If terminator is // NULL, then it is ignored. ! virtual bool offer_termination(TerminatorTerminator* terminator); // Reset the terminator, so that it may be reused again. // The caller is responsible for ensuring that this is done // in an MT-safe manner, once the previous round of use of // the terminator is finished.
*** 498,507 **** --- 498,527 ---- static uint total_peeks() { return _total_peeks; } static void print_termination_counts(); #endif }; + class TaskTerminator : public StackObj { + private: + ParallelTaskTerminator* _terminator; + + // Disable following copy constructors and assignment operator + TaskTerminator(TaskTerminator& o) { } + TaskTerminator(const TaskTerminator& o) { } + TaskTerminator& operator=(TaskTerminator& o) { return *this; } + public: + TaskTerminator(uint n_threads, TaskQueueSetSuper* queue_set); + ~TaskTerminator(); + + // Move assignment + TaskTerminator& operator=(const TaskTerminator& o); + + ParallelTaskTerminator* terminator() const { + return _terminator; + } + }; + typedef GenericTaskQueue<oop, mtGC> OopTaskQueue; typedef GenericTaskQueueSet<OopTaskQueue, mtGC> OopTaskQueueSet; #ifdef _MSC_VER #pragma warning(push)
< prev index next >