Classe task (Runtime de Simultaneidade)task Class (Concurrency Runtime)

A classe task da Biblioteca de Padrões Paralelos (PPL).The Parallel Patterns Library (PPL) task class. Um task objeto representa o trabalho que pode ser executado de forma assíncrona e simultânea com outras tarefas e trabalho paralelo produzido por algoritmos paralelos no tempo de execução de simultaneidade.A task object represents work that can be executed asynchronously and concurrently with other tasks and parallel work produced by parallel algorithms in the Concurrency Runtime. Produz um resultado de tipo _ResultType após uma conclusão bem-sucedida.It produces a result of type _ResultType on successful completion. Tarefas do tipo task<void> não produzem resultados.Tasks of type task<void> produce no result. Uma tarefa pode ser aguardada e cancelada independentemente de outras tarefas.A task can be waited upon and canceled independently of other tasks. Ele também pode ser composto por outras tarefas usando os padrões de continuação ( then ) e Join ( when_all ) e Choice ( when_any ).It can also be composed with other tasks using continuations( then), and join( when_all) and choice( when_any) patterns. Quando um objeto Task é atribuído a uma nova variável, o comportamento é o de std::shared_ptr ; em outras palavras, os dois objetos representam a mesma tarefa subjacente.When a task object is assigned to a new variable, the behavior is that of std::shared_ptr; in other words, both objects represent the same underlying task.

SintaxeSyntax

template <>
class task<void>;

template<typename _ResultType>
class task;

parâmetrosParameters

_ResultType_ResultType
O tipo do resultado que a tarefa produz.The type of the result that the task produces.

MembrosMembers

Typedefs públicosPublic Typedefs

NomeName DescriçãoDescription
result_type O tipo do resultado que um objeto desta classe produz.The type of the result an object of this class produces.

Construtores públicosPublic Constructors

NomeName DescriçãoDescription
agendatask Sobrecarregado.Overloaded. Constrói um objeto task.Constructs a task object.

Métodos públicosPublic Methods

NomeName DescriçãoDescription
getget Sobrecarregado.Overloaded. Retorna o resultado produzido por essa tarefa.Returns the result this task produced. Se a tarefa não estiver em um estado terminal, uma chamada para get irá aguardar a conclusão da tarefa.If the task is not in a terminal state, a call to get will wait for the task to finish. Esse método não retorna um valor quando chamado em uma tarefa com um result_type de void .This method does not return a value when called on a task with a result_type of void.
is_apartment_awareis_apartment_aware Determina se a tarefa desvincula uma interface de Windows Runtime IAsyncInfo ou se é descendente de tal tarefa.Determines whether the task unwraps a Windows Runtime IAsyncInfo interface or is descended from such a task.
is_doneis_done Determina se a tarefa foi concluída.Determines if the task is completed.
Agendadorscheduler Retorna o agendador para essa tarefaReturns the scheduler for this task
Cliquethen Sobrecarregado.Overloaded. Adiciona uma tarefa de continuação para essa tarefa.Adds a continuation task to this task.
esperadowait Aguarda que essa tarefa alcance um estado terminal.Waits for this task to reach a terminal state. É possível para wait executar a tarefa em linha, se todas as dependências de tarefas forem atendidas, e ela ainda não tiver sido escolhida para execução por um trabalho em segundo plano.It is possible for wait to execute the task inline, if all of the tasks dependencies are satisfied, and it has not already been picked up for execution by a background worker.

Operadores públicosPublic Operators

NomeName DescriçãoDescription
operador! =operator!= Sobrecarregado.Overloaded. Determina se dois objetos task representam tarefas internas diferentes.Determines whether two task objects represent different internal tasks.
operador =operator= Sobrecarregado.Overloaded. Substitui o conteúdo de um objeto task por outro.Replaces the contents of one task object with another.
operador = =operator== Sobrecarregado.Overloaded. Determina se dois objetos task representam a mesma tarefa interna.Determines whether two task objects represent the same internal task.

ComentáriosRemarks

Para obter mais informações, consulte paralelismo de tarefas.For more information, see Task Parallelism.

Hierarquia de herançaInheritance Hierarchy

task

RequisitosRequirements

Cabeçalho: ppltasks. hHeader: ppltasks.h

Namespace: simultaneidadeNamespace: concurrency

Obterget

Retorna o resultado produzido por essa tarefa.Returns the result this task produced. Se a tarefa não estiver em um estado terminal, uma chamada para get irá aguardar a conclusão da tarefa.If the task is not in a terminal state, a call to get will wait for the task to finish. Esse método não retorna um valor quando chamado em uma tarefa com um result_type de void .This method does not return a value when called on a task with a result_type of void.

_ResultType get() const;

void get() const;

Valor retornadoReturn Value

O resultado da tarefa.The result of the task.

ComentáriosRemarks

Se a tarefa for cancelada, uma chamada para gerará get uma exceção de task_canceled .If the task is canceled, a call to get will throw a task_canceled exception. Se a tarefa encontrou uma exceção diferente ou se uma exceção foi propagada a ela de uma tarefa Antecedent, uma chamada para gerará get essa exceção.If the task encountered an different exception or an exception was propagated to it from an antecedent task, a call to get will throw that exception.

Importante

Em um aplicativo Plataforma Universal do Windows (UWP), não chame Concurrency:: Task:: Wait ou get ( wait calls get ) no código que é executado no thread da interface do usuário.In a Universal Windows Platform (UWP) app, do not call concurrency::task::wait or get ( wait calls get) in code that runs on the user-interface thread. Caso contrário, o tempo de execução lançará Concurrency:: invalid_operation porque esses métodos bloqueiam o thread atual e podem fazer com que o aplicativo fique sem resposta.Otherwise, the runtime throws concurrency::invalid_operation because these methods block the current thread and can cause the app to become unresponsive. No entanto, você pode chamar o get método para receber o resultado da tarefa antecedente em uma continuação baseada em tarefa, pois o resultado está imediatamente disponível.However, you can call the get method to receive the result of the antecedent task in a task-based continuation because the result is immediately available.

is_apartment_awareis_apartment_aware

Determina se a tarefa desvincula uma interface de Windows Runtime IAsyncInfo ou se é descendente de tal tarefa.Determines whether the task unwraps a Windows Runtime IAsyncInfo interface or is descended from such a task.

bool is_apartment_aware() const;

Valor retornadoReturn Value

true se a tarefa desencapsular uma IAsyncInfo interface ou estiver descendente dessa tarefa, false caso contrário.true if the task unwraps an IAsyncInfo interface or is descended from such a task, false otherwise.

Método Task:: is_done (Tempo de Execução de Simultaneidade)task::is_done Method (Concurrency Runtime)

Determina se a tarefa foi concluída.Determines if the task is completed.

bool is_done() const;

Valor retornadoReturn Value

True se a tarefa for concluída; caso contrário, false.True if the task has completed, false otherwise.

ComentáriosRemarks

A função retornará true se a tarefa for concluída ou cancelada (com ou sem a exceção do usuário).The function returns true if the task is completed or canceled (with or without user exception).

operador! =operator!=

Determina se dois objetos task representam tarefas internas diferentes.Determines whether two task objects represent different internal tasks.

bool operator!= (const task<_ResultType>& _Rhs) const;

bool operator!= (const task<void>& _Rhs) const;

parâmetrosParameters

_Rhs_Rhs
A tarefa a ser comparada.The task to compare.

Valor retornadoReturn Value

true Se os objetos se referirem a diferentes tarefas subjacentes e, false caso contrário,.true if the objects refer to different underlying tasks, and false otherwise.

operador =operator=

Substitui o conteúdo de um objeto task por outro.Replaces the contents of one task object with another.

task& operator= (const task& _Other);

task& operator= (task&& _Other);

parâmetrosParameters

_Other_Other
O objeto task de origem.The source task object.

Valor retornadoReturn Value

ComentáriosRemarks

Como task se comporta como um ponteiro inteligente, após uma atribuição de cópia, esses task objetos representam a mesma tarefa real que o _Other faz.As task behaves like a smart pointer, after a copy assignment, this task objects represents the same actual task as _Other does.

operador = =operator==

Determina se dois objetos task representam a mesma tarefa interna.Determines whether two task objects represent the same internal task.

bool operator== (const task<_ResultType>& _Rhs) const;

bool operator== (const task<void>& _Rhs) const;

parâmetrosParameters

_Rhs_Rhs
A tarefa a ser comparada.The task to compare.

Valor retornadoReturn Value

true Se os objetos se referirem à mesma tarefa subjacente e, false caso contrário,.true if the objects refer to the same underlying task, and false otherwise.

tarefa:: método do Agendador (Tempo de Execução de Simultaneidade)task::scheduler Method (Concurrency Runtime)

Retorna o agendador para essa tarefaReturns the scheduler for this task

scheduler_ptr scheduler() const;

Valor retornadoReturn Value

Um ponteiro para o AgendadorA pointer to the scheduler

Tarefa task

Constrói um objeto task.Constructs a task object.

task();

template<typename T>
__declspec(
    noinline) explicit task(T _Param);

template<typename T>
__declspec(
    noinline) explicit task(T _Param, const task_options& _TaskOptions);

task(
    const task& _Other);

task(
    task&& _Other);

parâmetrosParameters

TT
O tipo do parâmetro do qual a tarefa deve ser construída.The type of the parameter from which the task is to be constructed.

_Param_Param
O parâmetro do qual a tarefa deve ser construída.The parameter from which the task is to be constructed. Isso pode ser um lambda, um objeto Function, um task_completion_event<result_type> objeto ou um Windows:: Foundation:: IAsyncInfo se você estiver usando tarefas em seu aplicativo Windows Runtime.This could be a lambda, a function object, a task_completion_event<result_type> object, or a Windows::Foundation::IAsyncInfo if you are using tasks in your Windows Runtime app. O objeto lambda ou de função deve ser um tipo equivalente a std::function<X(void)> , em que X pode ser uma variável do tipo result_type , task<result_type> ou um Windows:: Foundation:: IAsyncInfo em aplicativos Windows Runtime.The lambda or function object should be a type equivalent to std::function<X(void)>, where X can be a variable of type result_type, task<result_type>, or a Windows::Foundation::IAsyncInfo in Windows Runtime apps.

_TaskOptions_TaskOptions
As opções de tarefa incluem token de cancelamento, Agendador, etc.The task options include cancellation token, scheduler etc

_Other_Other
O objeto task de origem.The source task object.

ComentáriosRemarks

O construtor padrão para um task está presente apenas para permitir que as tarefas sejam usadas em contêineres.The default constructor for a task is only present in order to allow tasks to be used within containers. Uma tarefa construída padrão não pode ser usada até que você atribua uma tarefa válida a ela.A default constructed task cannot be used until you assign a valid task to it. Métodos como get wait ou then lançarão uma exceção invalid_argument quando chamados em uma tarefa construída padrão.Methods such as get, wait or then will throw an invalid_argument exception when called on a default constructed task.

Uma tarefa criada a partir de um task_completion_event será concluída (e terá suas continuaçãos agendadas) quando o evento de conclusão de tarefa for definido.A task that is created from a task_completion_event will complete (and have its continuations scheduled) when the task completion event is set.

A versão do construtor que usa um token de cancelamento cria uma tarefa que pode ser cancelada usando o cancellation_token_source token obtido do.The version of the constructor that takes a cancellation token creates a task that can be canceled using the cancellation_token_source the token was obtained from. As tarefas criadas sem um token de cancelamento não podem ser canceladas.Tasks created without a cancellation token are not cancelable.

As tarefas criadas a partir de uma Windows::Foundation::IAsyncInfo interface ou de um lambda que retorna uma IAsyncInfo interface atingem o estado do terminal quando a operação ou ação assíncrona Windows Runtimeda em anexo é concluída.Tasks created from a Windows::Foundation::IAsyncInfo interface or a lambda that returns an IAsyncInfo interface reach their terminal state when the enclosed Windows Runtime asynchronous operation or action completes. Da mesma forma, as tarefas criadas a partir de um lambda que retorna um task<result_type> alcance o estado do terminal quando a tarefa interna atinge seu estado de terminal e não quando o lambda retorna.Similarly, tasks created from a lambda that returns a task<result_type> reach their terminal state when the inner task reaches its terminal state, and not when the lambda returns.

taskcomporta-se como um ponteiro inteligente e é seguro de passar por valor.task behaves like a smart pointer and is safe to pass around by value. Ele pode ser acessado por vários threads sem a necessidade de bloqueios.It can be accessed by multiple threads without the need for locks.

As sobrecargas de construtor que usam a interface Windows:: Foundation:: IAsyncInfo ou um lambda retornando essa interface, só estão disponíveis para aplicativos Windows Runtime.The constructor overloads that take a Windows::Foundation::IAsyncInfo interface or a lambda returning such an interface, are only available to Windows Runtime apps.

Para obter mais informações, consulte paralelismo de tarefas.For more information, see Task Parallelism.

Cliquethen

Adiciona uma tarefa de continuação para essa tarefa.Adds a continuation task to this task.

template<typename _Function>
__declspec(
    noinline) auto then(const _Function& _Func) const -> typename details::_ContinuationTypeTraits<_Function,
    _ResultType>::_TaskOfType;

template<typename _Function>
__declspec(
    noinline) auto then(const _Function& _Func,
    const task_options& _TaskOptions) const -> typename details::_ContinuationTypeTraits<_Function,
    _ResultType>::_TaskOfType;

template<typename _Function>
__declspec(
    noinline) auto then(const _Function& _Func,
    cancellation_token _CancellationToken,
    task_continuation_context _ContinuationContext) const -> typename details::_ContinuationTypeTraits<_Function,
    _ResultType>::_TaskOfType;

template<typename _Function>
__declspec(
    noinline) auto then(const _Function& _Func,
    const task_options& _TaskOptions = task_options()) const -> typename details::_ContinuationTypeTraits<_Function,
    void>::_TaskOfType;

template<typename _Function>
__declspec(
    noinline) auto then(const _Function& _Func,
    cancellation_token _CancellationToken,
    task_continuation_context _ContinuationContext) const -> typename details::_ContinuationTypeTraits<_Function,
    void>::_TaskOfType;

parâmetrosParameters

_Function_Function
O tipo do objeto de função que será invocado por essa tarefa.The type of the function object that will be invoked by this task.

_Func_Func
A função de continuação a ser executada quando esta tarefa for concluída.The continuation function to execute when this task completes. Essa função de continuação deve usar como entrada uma variável de result_type ou task<result_type> , em que result_type é o tipo do resultado que essa tarefa produz.This continuation function must take as input a variable of either result_type or task<result_type>, where result_type is the type of the result this task produces.

_TaskOptions_TaskOptions
As opções de tarefa incluem token de cancelamento, Agendador e contexto de continuação.The task options include cancellation token, scheduler and continuation context. Por padrão, as três opções anteriores são herdadas da tarefa antecedenteBy default the former 3 options are inherited from the antecedent task

_CancellationToken_CancellationToken
O token de cancelamento a ser associado à tarefa de continuação.The cancellation token to associate with the continuation task. Uma tarefa de continuação que é criada sem um token de cancelamento herdará o token de sua tarefa antecedente.A continuation task that is created without a cancellation token will inherit the token of its antecedent task.

_ContinuationContext_ContinuationContext
Uma variável que especifica onde a continuação deve ser executada.A variable that specifies where the continuation should execute. Essa variável só é útil quando usada em um aplicativo UWP.This variable is only useful when used in a UWP app. Para obter mais informações, consulte task_continuation_contextFor more information, see task_continuation_context

Valor retornadoReturn Value

A tarefa de continuação recém-criada.The newly created continuation task. O tipo de resultado da tarefa retornada é determinado pelo que _Func retorna.The result type of the returned task is determined by what _Func returns.

ComentáriosRemarks

As sobrecargas de then que usam lambda ou functor que retornam uma interface Windows:: Foundation:: IAsyncInfo, estão disponíveis somente para aplicativos Windows Runtime.The overloads of then that take a lambda or functor that returns a Windows::Foundation::IAsyncInfo interface, are only available to Windows Runtime apps.

Para obter mais informações sobre como usar as continuações de tarefa para compor trabalho assíncrono, consulte paralelismo de tarefas.For more information on how to use task continuations to compose asynchronous work, see Task Parallelism.

esperadowait

Aguarda que essa tarefa alcance um estado terminal.Waits for this task to reach a terminal state. É possível para wait executar a tarefa em linha, se todas as dependências de tarefas forem atendidas, e ela ainda não tiver sido escolhida para execução por um trabalho em segundo plano.It is possible for wait to execute the task inline, if all of the tasks dependencies are satisfied, and it has not already been picked up for execution by a background worker.

task_status wait() const;

Valor retornadoReturn Value

Um task_status valor que pode ser completed ou canceled .A task_status value which could be either completed or canceled. Se a tarefa encontrou uma exceção durante a execução ou se uma exceção foi propagada a ela de uma tarefa Antecedent, o wait gerará essa exceção.If the task encountered an exception during execution, or an exception was propagated to it from an antecedent task, wait will throw that exception.

ComentáriosRemarks

Importante

Em um aplicativo Plataforma Universal do Windows (UWP), não chame wait no código que é executado no thread da interface do usuário.In a Universal Windows Platform (UWP) app, do not call wait in code that runs on the user-interface thread. Caso contrário, o tempo de execução lançará Concurrency:: invalid_operation porque esse método bloqueia o thread atual e pode fazer com que o aplicativo fique sem resposta.Otherwise, the runtime throws concurrency::invalid_operation because this method blocks the current thread and can cause the app to become unresponsive. No entanto, você pode chamar o método Concurrency:: Task:: Get para receber o resultado da tarefa Antecedent em uma continuação baseada em tarefa.However, you can call the concurrency::task::get method to receive the result of the antecedent task in a task-based continuation.

Confira tambémSee also

Namespace de simultaneidadeconcurrency Namespace