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

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/