StaticJobGroupInterface< T > Class Template Reference 线程

#include <jobgroup.h>

Inheritance diagram for StaticJobGroupInterface< T >:

详细描述

template<typename T>
class maxon::StaticJobGroupInterface< T >

This is a template for homogenous static job group (all job of the same type and the number of jobs is known at creation). Once you have allocated a StaticJobGroup you cannot add more than the number of jobs specified and you cannot add jobs of a different type than specified in the template. Nonetheless you can add as many subgroups as you want.

公共成员函数

void  添加 ( StaticJobArray < T > &jobs)
String   ToString (const FormatStatement *formatStatement=nullptr) const
Result < void >  添加 ( JobInterface *job)
Result < void >  添加 ( JobRef &job)
template<typename T >
Result < void >  添加 ( ResultMemT < T * > job)
template<typename JOBREF >
Result < void >  添加 ( ResultMemT < JOBREF > &&job)
template<typename T >
Result < void >  添加 ( BaseArray < T > &jobs)
Result < void >  添加 ( JobGroupInterface *subGroup)
-  Public Member Functions inherited from JobGroupInterface
JobGroupInterface Enqueue ( JobQueueInterface *queue= JOBQUEUE_CURRENT )
Result < void >  EnqueueAndWait ( JobQueueInterface *queue= JOBQUEUE_CURRENT )
Bool   Wait ( TimeValue timeout= TIMEVALUE_INFINITE , WAITMODE mode= WAITMODE::DEFAULT ) const
Result < void >  GetResult ( TimeValue timeout= TIMEVALUE_INFINITE , WAITMODE mode= WAITMODE::DEFAULT ) const
Result < void >  添加 ( JobInterface *job)
Result < void >  添加 ( JobRef &job)
template<typename T >
Result < void >  添加 ( ResultMemT < T * > job)
template<typename JOBREF >
Result < void >  添加 ( ResultMemT < JOBREF > &&job)
template<JOBCANCELLATION B = JOBCANCELLATION::ISOK, typename FN >
  DISABLE_IF_JOB_OR_GROUP (FN, Result < void >) 添加 (FN && src )
template<typename T >
Result < void >  添加 ( BaseArray < T > &jobs)
Result < void >  添加 ( JobGroupInterface *subGroup)
ObservableFinishedBase < JobGroupInterface ObservableFinished ()
void  取消 ()
void  CancelAndWait ( WAITMODE mode= WAITMODE::DEFAULT )
String   ToString (const FormatStatement *formatStatement=nullptr) const

静态公共成员函数

static ResultPtr < StaticJobGroupInterface Alloc ( Int jobCnt, STATICJOBGROUPFLAGS flags= STATICJOBGROUPFLAGS::DEFAULT , Int extraBufferSize=0)

私有成员函数

  ~StaticJobGroupInterface ()

构造函数 & 析构函数文档编制

◆  ~StaticJobGroupInterface()

~ StaticJobGroupInterface () private

成员函数文档编制

◆  Add() [1/7]

void Add ( StaticJobArray < T > &  jobs )

Adds an array with multiple jobs of the same type to the group (faster than single Add() s).

参数
[in] jobs A StaticJobArray that was initialized with this group.

◆  Alloc()

static ResultPtr < StaticJobGroupInterface > Alloc ( Int   jobCnt ,
STATICJOBGROUPFLAGS   flags = STATICJOBGROUPFLAGS::DEFAULT ,
Int   extraBufferSize = 0  
)
static

Allocates a StaticJobGroup.

参数
[in] jobCnt The maximum number of jobs for this group.
[in] flags STATICJOBGROUPFLAGS::DEFAULT by default, the other custom modes are for ParallelFor only.
[in] extraBufferSize By default 0. Size of a private buffer that can be allocated together with the group.
返回
StaticJobGroupInterface pointer or nullptr if allocation failed.

◆  ToString()

String ToString ( const FormatStatement formatStatement = nullptr ) const

Returns a readable string of the content.

参数
[in] formatStatement Nullptr or additional formatting instruction. Currently no additional formatting instructions are supported.
返回
The converted result.

◆  Add() [2/7]

Result <void> Add

Adds a job to the group. The group takes exclusive ownership of the job. The job will be deleted after it has been executed, when the group will be deleted or when adding the job fails. The job must have been created using DefaultAllocator , e.g. with Create() or NewObj() . If you had created a job on the stack or used a custom allocator this would lead to a crash. As long as the group is not enqueued you can add jobs from any thread. As soon as it is enqueued only jobs belonging to the group are allowed to add further jobs. THREADSAFE.

参数
[in] job Job (nullptr will return error).
返回
OK on success.

◆  Add() [3/7]

Result <void> Add

Adds a job to the group. The group takes exclusive ownership of the job. The job will be deleted after it has been executed, when the group will be deleted or when adding the job fails. The job must have been created using DefaultAllocator , e.g. with Create() or NewObj() . If you had created a job on the stack or used a custom allocator this would lead to a crash. As long as the group is not enqueued you can add jobs from any thread. As soon as it is enqueued only jobs belonging to the group are allowed to add further jobs. THREADSAFE.

参数
[in] job Job (nullptr will return error).
返回
OK on success.

◆  Add() [4/7]

Result <void> Add ( typename T  )

Adds a job to the group. The group takes exclusive ownership of the job. The job will be deleted after it has been executed, when the group will be deleted or when adding the job fails. The job must have been created using DefaultAllocator , e.g. with Create() or NewObj() . If you had created a job on the stack or used a custom allocator this would lead to a crash. As long as the group is not enqueued you can add jobs from any thread. As soon as it is enqueued only jobs belonging to the group are allowed to add further jobs. THREADSAFE.

参数
[in] job Job (encapsulated in a ResultMemT directly returned from creation).
返回
OK on success.

◆  Add() [5/7]

Result <void> Add ( typename JOBREF  )

Adds a job to the group. The group takes exclusive ownership of the job. The job will be deleted after it has been executed, when the group will be deleted or when adding the job fails. The job must have been created using DefaultAllocator , e.g. with Create() or NewObj() . If you had created a job on the stack or used a custom allocator this would lead to a crash. As long as the group is not enqueued you can add jobs from any thread. As soon as it is enqueued only jobs belonging to the group are allowed to add further jobs. THREADSAFE.

参数
[in] job Job (encapsulated in a ResultMemT directly returned from creation).
返回
OK on success.

◆  Add() [6/7]

Result <void> Add ( typename T  )

Adds an array with multiple jobs of the same type to the group (faster than single Add() s). The group takes exclusive ownership of the jobs. The jobs and the memory for the array will be freed after they have been executed. If adding the jobs failed they and the memory will be deleted automatically. The array must use the DefaultAllocator for memory allocations. Do not use a custom allocator because this would lead to a crash. As long as the group is not enqueued you can add jobs from any thread. As soon as it is enqueued only jobs belonging to the group are allowed to add further jobs. THREADSAFE.

参数
[in] jobs A BaseArray containing your jobs.
返回
OK on success.

◆  Add() [7/7]

Result <void> Add

Adds a subgroup to the group. This will add a reference to the group and remove it when the group is not accessed anymore. If adding a subgroup fails its reference will be removed and its jobs will be stopped. As long as the group is not enqueued you can add subgroups from any thread. As soon as it is enqueued only jobs belonging to the group are allowed to add further subgroups. THREADSAFE.

参数
[in] subGroup Group object (nullptr will return error).
返回
OK on success.