template<typename T>
class maxon::StaticJobGroupRef< T >
Reference to a group with static maximum job count (StaticJobGroupInterface).
|
| MAXON_DEFAULT_REFERENCE_CONSTRUCTORS (StaticJobGroupRef, Ptr) |
|
void | Add (StaticJobArray< T > &jobs) const |
|
const StaticJobGroupRef< T > & | Enqueue (JobQueueInterface *queue=JOBQUEUE_CURRENT) const |
|
Result< void > | EnqueueAndWait (JobQueueInterface *queue=JOBQUEUE_CURRENT) const |
|
Bool | Wait (TimeValue timeout=TIMEVALUE_INFINITE, WAITMODE mode=WAITMODE::DEFAULT) const |
|
Result< void > | GetResult (TimeValue timeout=TIMEVALUE_INFINITE, WAITMODE mode=WAITMODE::DEFAULT) const |
|
ObservableFinishedBase< JobGroupInterface > | ObservableFinished () const |
|
void | Cancel () const |
|
void | CancelAndWait (WAITMODE mode=WAITMODE::DEFAULT) const |
|
| operator const JobGroupRef & () const |
|
String | ToString (const FormatStatement *formatStatement=nullptr) const |
|
T * | GetPointer () |
|
ConstReferencedType * | GetPointer () const |
|
T * | operator-> () |
|
ConstReferencedType * | operator-> () const |
|
std::conditional< std::is_void< T >::value, DeleteReturnType01, T >::type & | operator* () |
|
std::conditional< std::is_void< ConstReferencedType >::value, DeleteReturnType01, T >::type & | operator* () const |
|
| operator T* () |
|
| operator ConstReferencedType * () const |
|
| operator Bool () const |
|
| operator Bool () |
|
const std::conditional< std::is_void< T >::value, DeleteReturnType01, T >::type & | operator[] (Int) const =delete |
|
ResultRef< typename std::remove_const< T >::type > | MakeWritable (Bool resetOnError=true) |
|
ResultRef< typename std::remove_const< T >::type > | MakeWritableDontCopy () |
|
Bool | HasMultipleReferences () const |
|
std::conditional< std::is_void< T >::value, DeleteReturnType01, T >::type & | GetOrNull () const |
|
| BaseRef () |
|
MAXON_IMPLICIT | BaseRef (std::nullptr_t)=delete |
|
MAXON_IMPLICIT | BaseRef (T *o) |
|
template<typename PTR > |
| BaseRef (ForwardResultPtr< PTR > o) |
|
| BaseRef (ResultPtr< T > o, Int) |
|
| BaseRef (const BaseRef &src) |
|
template<typename REF , typename = typename std::enable_if<!STD_IS_REPLACEMENT(base_of, BaseRef, REF) && maxon::HasErasedBase<typename REF::ReferencedType, ReferencedType>::value>::type> |
MAXON_IMPLICIT | BaseRef (const REF &src) |
|
template<typename REF , typename = typename std::enable_if<!STD_IS_REPLACEMENT(base_of, BaseRef, REF) && maxon::HasErasedBase<typename REF::ReferencedType, ReferencedType>::value>::type> |
MAXON_IMPLICIT | BaseRef (REF &src) |
|
BaseRef & | operator= (T *src) |
|
BaseRef & | operator= (std::nullptr_t src) |
|
BaseRef & | operator= (const BaseRef &src) |
|
template<typename REF , typename = typename std::enable_if<!STD_IS_REPLACEMENT(base_of, BaseRef, REF) && maxon::HasErasedBase<typename REF::ReferencedType, ReferencedType>::value>::type> |
BaseRef & | operator= (const REF &src) |
|
template<typename REF , typename = typename std::enable_if<!STD_IS_REPLACEMENT(base_of, BaseRef, REF) && maxon::HasErasedBase<typename REF::ReferencedType, ReferencedType>::value>::type> |
BaseRef & | operator= (REF &src) |
|
| BaseRef (BaseRef &&src) |
|
template<typename REF , typename = typename std::enable_if<!STD_IS_REPLACEMENT(const, REF) && !STD_IS_REPLACEMENT(base_of, BaseRef, REF) && maxon::HasErasedBase<typename REF::ReferencedType, ReferencedType>::value>::type> |
MAXON_IMPLICIT | BaseRef (REF &&src) |
|
BaseRef & | operator= (BaseRef &&src) |
|
template<typename REF , typename = typename std::enable_if<!STD_IS_REPLACEMENT(const, REF) && !STD_IS_REPLACEMENT(base_of, BaseRef, REF) && maxon::HasErasedBase<typename REF::ReferencedType, ReferencedType>::value>::type> |
BaseRef & | operator= (REF &&src) |
|
| ~BaseRef () |
|
Bool | operator== (const BaseRef &b) const |
|
Bool | operator!= (const BaseRef &b) const |
|
Bool | operator< (const BaseRef &b) const |
|
| MAXON_OPERATOR_INEQUALITY (BaseRef) |
|
Bool | operator== (const T *b) const |
|
Bool | operator!= (const T *b) const |
|
Bool | operator== (typename std::remove_const< T >::type *b) const |
|
Bool | operator!= (typename std::remove_const< T >::type *b) const |
|
Bool | operator== (std::nullptr_t) const |
|
Bool | operator!= (std::nullptr_t) const |
|
HashInt | GetHashCode () const |
|
UniqueHash | GetUniqueHashCode () const |
|
std::conditional< Bool(HANDLER::KIND &VALUEKIND::COW_MASK), typename std::remove_const< T >::type, T >::type * | Disconnect () |
|
void | PrivateSetTarget (ResultPtr< T > src) |
|
void | PrivateSetPointer (T *ptr) |
|
Waits until all jobs of the group have been executed.
Wait() might execute other jobs in the current queue until the group you are waiting for has finished or is timed out. Therefore you may never lock a shared resource another job might use as well and then wait. For one this could dead-lock and conceptually this would result in single-threaded performance.
If you try to call Wait() from a job which did not enqueue the group it will immediately return false because this would lead to a deadlock.
Instead of waiting for some group to start some action after it has finished you can subscribe to ObservableFinished(). This cannot dead-lock, is more efficient and can even be used to run the observer in a different queue. For example you can run a job and register an observer for it that will run on the main thread's queue and updates the UI. THREADSAFE.
- Parameters
-
[in] | timeout | Maximum wait interval (or TIMEVALUE_INFINITE for no time-out). |
[in] | mode | WAITMODE::DEFAULT by default. WAITMODE::RETURN_ON_CANCEL means that Wait() will return if the caller has been cancelled even if the condition has not been set yet. |
- Returns
- True if successful, false if you try to wait inside an enqueued job.