enumerable_thread_specific.h | enumerable_thread_specific.h | |||
---|---|---|---|---|
skipping to change at line 777 | skipping to change at line 777 | |||
enumerable_thread_specific() : | enumerable_thread_specific() : | |||
my_construct_callback( internal::callback_leaf<T,internal::cons truct_by_default<T> >::make(/*dummy argument*/0) ) | my_construct_callback( internal::callback_leaf<T,internal::cons truct_by_default<T> >::make(/*dummy argument*/0) ) | |||
{} | {} | |||
//! Constructor with initializer functor. Each local instance of T is constructed by T(finit()). | //! Constructor with initializer functor. Each local instance of T is constructed by T(finit()). | |||
template <typename Finit> | template <typename Finit> | |||
enumerable_thread_specific( Finit finit ) : | enumerable_thread_specific( Finit finit ) : | |||
my_construct_callback( internal::callback_leaf<T,internal::cons truct_by_finit<T,Finit> >::make( finit ) ) | my_construct_callback( internal::callback_leaf<T,internal::cons truct_by_finit<T,Finit> >::make( finit ) ) | |||
{} | {} | |||
//! Constuctor with exemplar. Each local instance of T is copied-c onstructed from the exemplar. | //! Constructor with exemplar. Each local instance of T is copied- constructed from the exemplar. | |||
enumerable_thread_specific(const T& exemplar) : | enumerable_thread_specific(const T& exemplar) : | |||
my_construct_callback( internal::callback_leaf<T,internal::cons truct_by_exemplar<T> >::make( exemplar ) ) | my_construct_callback( internal::callback_leaf<T,internal::cons truct_by_exemplar<T> >::make( exemplar ) ) | |||
{} | {} | |||
//! Destructor | //! Destructor | |||
~enumerable_thread_specific() { | ~enumerable_thread_specific() { | |||
my_construct_callback->destroy(); | my_construct_callback->destroy(); | |||
this->clear(); // deallocation before the derived class is fin ished destructing | this->clear(); // deallocation before the derived class is fin ished destructing | |||
// So free(array *) is still accessible | // So free(array *) is still accessible | |||
} | } | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
pipeline.h | pipeline.h | |||
---|---|---|---|---|
skipping to change at line 302 | skipping to change at line 302 | |||
//! True if the pipeline contains a thread-bound filter; false otherwis e. | //! True if the pipeline contains a thread-bound filter; false otherwis e. | |||
bool has_thread_bound_filters; | bool has_thread_bound_filters; | |||
//! Remove filter from pipeline. | //! Remove filter from pipeline. | |||
void remove_filter( filter& filter_ ); | void remove_filter( filter& filter_ ); | |||
//! Not used, but retained to satisfy old export files. | //! Not used, but retained to satisfy old export files. | |||
void __TBB_EXPORTED_METHOD inject_token( task& self ); | void __TBB_EXPORTED_METHOD inject_token( task& self ); | |||
#if __TBB_TASK_GROUP_CONTEXT | #if __TBB_TASK_GROUP_CONTEXT | |||
//! Does clean up if pipeline is cancelled or exception occured | //! Does clean up if pipeline is cancelled or exception occurred | |||
void clear_filters(); | void clear_filters(); | |||
#endif | #endif | |||
}; | }; | |||
//------------------------------------------------------------------------ | //------------------------------------------------------------------------ | |||
// Support for lambda-friendly parallel_pipeline interface | // Support for lambda-friendly parallel_pipeline interface | |||
//------------------------------------------------------------------------ | //------------------------------------------------------------------------ | |||
namespace interface6 { | namespace interface6 { | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
task.h | task.h | |||
---|---|---|---|---|
skipping to change at line 553 | skipping to change at line 553 | |||
//! task to be rescheduled. | //! task to be rescheduled. | |||
reexecute, | reexecute, | |||
//! task is in ready pool, or is going to be put there, or was just taken off. | //! task is in ready pool, or is going to be put there, or was just taken off. | |||
ready, | ready, | |||
//! task object is freshly allocated or recycled. | //! task object is freshly allocated or recycled. | |||
allocated, | allocated, | |||
//! task object is on free list, or is going to be put there, or wa s just taken off. | //! task object is on free list, or is going to be put there, or wa s just taken off. | |||
freed, | freed, | |||
//! task to be recycled as continuation | //! task to be recycled as continuation | |||
recycle | recycle | |||
#if __TBB_RECYCLE_TO_ENQUEUE | ||||
//! task to be scheduled for starvation-resistant execution | ||||
,to_enqueue | ||||
#endif | ||||
}; | }; | |||
//--------------------------------------------------------------------- --- | //--------------------------------------------------------------------- --- | |||
// Allocating tasks | // Allocating tasks | |||
//--------------------------------------------------------------------- --- | //--------------------------------------------------------------------- --- | |||
//! Returns proxy for overloaded new that allocates a root task. | //! Returns proxy for overloaded new that allocates a root task. | |||
static internal::allocate_root_proxy allocate_root() { | static internal::allocate_root_proxy allocate_root() { | |||
return internal::allocate_root_proxy(); | return internal::allocate_root_proxy(); | |||
} | } | |||
skipping to change at line 644 | skipping to change at line 648 | |||
} | } | |||
//! Schedule this for reexecution after current execute() returns. | //! Schedule this for reexecution after current execute() returns. | |||
/** Made obsolete by recycle_as_safe_continuation; may become deprecate d. */ | /** Made obsolete by recycle_as_safe_continuation; may become deprecate d. */ | |||
void recycle_to_reexecute() { | void recycle_to_reexecute() { | |||
__TBB_ASSERT( prefix().state==executing, "execute not running, or a lready recycled" ); | __TBB_ASSERT( prefix().state==executing, "execute not running, or a lready recycled" ); | |||
__TBB_ASSERT( prefix().ref_count==0, "no child tasks allowed when r ecycled for reexecution" ); | __TBB_ASSERT( prefix().ref_count==0, "no child tasks allowed when r ecycled for reexecution" ); | |||
prefix().state = reexecute; | prefix().state = reexecute; | |||
} | } | |||
#if __TBB_RECYCLE_TO_ENQUEUE | ||||
//! Schedule this to enqueue after descendant tasks complete. | ||||
/** Save enqueue/spawn difference, it has the semantics of recycle_as_s | ||||
afe_continuation. */ | ||||
void recycle_to_enqueue() { | ||||
__TBB_ASSERT( prefix().state==executing, "execute not running, or a | ||||
lready recycled" ); | ||||
prefix().state = to_enqueue; | ||||
} | ||||
#endif /* __TBB_RECYCLE_TO_ENQUEUE */ | ||||
// All depth-related methods are obsolete, and are retained for the sak e | // All depth-related methods are obsolete, and are retained for the sak e | |||
// of backward source compatibility only | // of backward source compatibility only | |||
intptr_t depth() const {return 0;} | intptr_t depth() const {return 0;} | |||
void set_depth( intptr_t ) {} | void set_depth( intptr_t ) {} | |||
void add_to_depth( int ) {} | void add_to_depth( int ) {} | |||
//--------------------------------------------------------------------- --- | //--------------------------------------------------------------------- --- | |||
// Spawning and blocking | // Spawning and blocking | |||
//--------------------------------------------------------------------- --- | //--------------------------------------------------------------------- --- | |||
End of changes. 2 change blocks. | ||||
0 lines changed or deleted | 15 lines changed or added | |||
task_scheduler_observer.h | task_scheduler_observer.h | |||
---|---|---|---|---|
skipping to change at line 151 | skipping to change at line 151 | |||
//! The callback can be invoked in a worker thread before it leaves an arena. | //! The callback can be invoked in a worker thread before it leaves an arena. | |||
/** If it returns false, the thread remains in the arena. Will not be c alled for masters | /** If it returns false, the thread remains in the arena. Will not be c alled for masters | |||
or if the worker leaves arena due to rebalancing or priority change s, etc. | or if the worker leaves arena due to rebalancing or priority change s, etc. | |||
NOTE: The preview library must be linked for this method to take ef fect **/ | NOTE: The preview library must be linked for this method to take ef fect **/ | |||
virtual bool on_scheduler_leaving() { return true; } | virtual bool on_scheduler_leaving() { return true; } | |||
//! Destructor additionally protects concurrent on_scheduler_leaving no tification | //! Destructor additionally protects concurrent on_scheduler_leaving no tification | |||
// It is recommended to disable observation before destructor of a deri ved class starts, | // It is recommended to disable observation before destructor of a deri ved class starts, | |||
// otherwise it can lead to concurrent notification callback on partly destroyed object | // otherwise it can lead to concurrent notification callback on partly destroyed object | |||
virtual ~task_scheduler_observer() { if(my_proxy) observe(false);} | virtual ~task_scheduler_observer() { if(my_proxy) observe(false); } | |||
}; | }; | |||
} //namespace interface6 | } //namespace interface6 | |||
using interface6::task_scheduler_observer; | using interface6::task_scheduler_observer; | |||
#else /*TBB_PREVIEW_LOCAL_OBSERVER*/ | #else /*TBB_PREVIEW_LOCAL_OBSERVER*/ | |||
typedef tbb::internal::task_scheduler_observer_v3 task_scheduler_observer; | typedef tbb::internal::task_scheduler_observer_v3 task_scheduler_observer; | |||
#endif /*TBB_PREVIEW_LOCAL_OBSERVER*/ | #endif /*TBB_PREVIEW_LOCAL_OBSERVER*/ | |||
} // namespace tbb | } // namespace tbb | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||
tbb_config.h | tbb_config.h | |||
---|---|---|---|---|
skipping to change at line 317 | skipping to change at line 317 | |||
#define __TBB_SCHEDULER_OBSERVER 1 | #define __TBB_SCHEDULER_OBSERVER 1 | |||
#endif /* __TBB_SCHEDULER_OBSERVER */ | #endif /* __TBB_SCHEDULER_OBSERVER */ | |||
#if !defined(TBB_PREVIEW_TASK_ARENA) && __TBB_BUILD | #if !defined(TBB_PREVIEW_TASK_ARENA) && __TBB_BUILD | |||
#define TBB_PREVIEW_TASK_ARENA __TBB_CPF_BUILD | #define TBB_PREVIEW_TASK_ARENA __TBB_CPF_BUILD | |||
#endif /* TBB_PREVIEW_TASK_ARENA */ | #endif /* TBB_PREVIEW_TASK_ARENA */ | |||
#define __TBB_TASK_ARENA TBB_PREVIEW_TASK_ARENA | #define __TBB_TASK_ARENA TBB_PREVIEW_TASK_ARENA | |||
#if TBB_PREVIEW_TASK_ARENA | #if TBB_PREVIEW_TASK_ARENA | |||
#define TBB_PREVIEW_LOCAL_OBSERVER 1 | #define TBB_PREVIEW_LOCAL_OBSERVER 1 | |||
#define __TBB_NO_IMPLICIT_LINKAGE 1 | #define __TBB_NO_IMPLICIT_LINKAGE 1 | |||
#define __TBB_RECYCLE_TO_ENQUEUE 1 | ||||
#define __TBB_TASK_PRIORITY 0 // TODO: it will be removed in next versi ons | #define __TBB_TASK_PRIORITY 0 // TODO: it will be removed in next versi ons | |||
#if !__TBB_SCHEDULER_OBSERVER | #if !__TBB_SCHEDULER_OBSERVER | |||
#error TBB_PREVIEW_TASK_ARENA requires __TBB_SCHEDULER_OBSERVER to be enabled | #error TBB_PREVIEW_TASK_ARENA requires __TBB_SCHEDULER_OBSERVER to be enabled | |||
#endif | #endif | |||
#endif /* TBB_PREVIEW_TASK_ARENA */ | #endif /* TBB_PREVIEW_TASK_ARENA */ | |||
#if !defined(TBB_PREVIEW_LOCAL_OBSERVER) && __TBB_BUILD && __TBB_SCHEDULER_ OBSERVER | #if !defined(TBB_PREVIEW_LOCAL_OBSERVER) && __TBB_BUILD && __TBB_SCHEDULER_ OBSERVER | |||
#define TBB_PREVIEW_LOCAL_OBSERVER 1 | #define TBB_PREVIEW_LOCAL_OBSERVER 1 | |||
#endif /* TBB_PREVIEW_LOCAL_OBSERVER */ | #endif /* TBB_PREVIEW_LOCAL_OBSERVER */ | |||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 1 lines changed or added | |||
tbb_stddef.h | tbb_stddef.h | |||
---|---|---|---|---|
skipping to change at line 37 | skipping to change at line 37 | |||
*/ | */ | |||
#ifndef __TBB_tbb_stddef_H | #ifndef __TBB_tbb_stddef_H | |||
#define __TBB_tbb_stddef_H | #define __TBB_tbb_stddef_H | |||
// Marketing-driven product version | // Marketing-driven product version | |||
#define TBB_VERSION_MAJOR 4 | #define TBB_VERSION_MAJOR 4 | |||
#define TBB_VERSION_MINOR 1 | #define TBB_VERSION_MINOR 1 | |||
// Engineering-focused interface version | // Engineering-focused interface version | |||
#define TBB_INTERFACE_VERSION 6103 | #define TBB_INTERFACE_VERSION 6104 | |||
#define TBB_INTERFACE_VERSION_MAJOR TBB_INTERFACE_VERSION/1000 | #define TBB_INTERFACE_VERSION_MAJOR TBB_INTERFACE_VERSION/1000 | |||
// The oldest major interface version still supported | // The oldest major interface version still supported | |||
// To be used in SONAME, manifests, etc. | // To be used in SONAME, manifests, etc. | |||
#define TBB_COMPATIBLE_INTERFACE_VERSION 2 | #define TBB_COMPATIBLE_INTERFACE_VERSION 2 | |||
#define __TBB_STRING_AUX(x) #x | #define __TBB_STRING_AUX(x) #x | |||
#define __TBB_STRING(x) __TBB_STRING_AUX(x) | #define __TBB_STRING(x) __TBB_STRING_AUX(x) | |||
// We do not need defines below for resource processing on windows | // We do not need defines below for resource processing on windows | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||