Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Define um objeto que é usado para observar e gerenciar um thread de execução dentro de um aplicativo.
Sintaxe
class thread;
Comentários
Você pode usar um objeto thread para observar e gerenciar um thread de execução dentro de um aplicativo. Um objeto thread criado usando o construtor padrão não está associado a nenhum thread de execução. Um objeto thread que é construído usando um objeto chamável cria um novo thread de execução e chama o objeto chamável nesse thread.
Thread objetos podem ser movidos, mas não copiados, e é por isso que um thread de execução pode ser associado a apenas um objeto thread.
Cada thread de execução tem um identificador exclusivo do tipo thread::id. A função this_thread::get_id retorna o identificador do thread de chamada. A função de membro thread::get_id retorna o identificador do thread que é gerenciado por um objeto thread. Para um objeto thread construído por padrão, o método thread::get_id retorna um objeto que tem um valor que é o mesmo para todos os objetos de thread construídos por padrão e diferente do valor retornado por this_thread::get_id para qualquer thread de execução que possa ser unido no momento da chamada.
Membros
Aulas Públicas
| Designação | Descrição |
|---|---|
id |
Identifica exclusivamente o thread associado. |
Construtores Públicos
| Designação | Descrição |
|---|---|
thread |
Constrói um objeto thread. |
Métodos Públicos
| Designação | Descrição |
|---|---|
detach |
Desanexa o thread associado do objeto thread. |
get_id |
Retorna o identificador exclusivo do thread associado. |
hardware_concurrency |
Estática. Retorna uma estimativa do número de contextos de thread de hardware. |
join |
Bloqueia até que o thread associado seja concluído. |
joinable |
Especifica se o thread associado é joinable. |
native_handle |
Retorna o tipo específico de implementação que representa o identificador de thread. |
swap |
Troca o estado do objeto por um objeto thread especificado. |
Operadores Públicos
| Designação | Descrição |
|---|---|
thread::operator= |
Associa um thread ao objeto thread atual. |
Requerimentos
Cabeçalho:<thread>
Namespace:std
detach
Desanexa o thread associado. O sistema operacional torna-se responsável por liberar recursos de thread no encerramento.
void detach();
Comentários
Após uma chamada para detach, as chamadas subsequentes para get_id retornam id.
Se o thread associado ao objeto chamador não puder ser associado, a função lançará um system_error que tem um código de erro de invalid_argument.
Se o thread associado ao objeto chamador for inválido, a função lançará um system_error que tem um código de erro de no_such_process.
get_id
Retorna um identificador exclusivo para o thread associado.
id get_id() const noexcept;
Valor de retorno
Um objeto id que identifica exclusivamente o thread associado ou id() se nenhum thread estiver associado ao objeto.
hardware_concurrency
Método estático que retorna uma estimativa do número de contextos de thread de hardware.
static unsigned int hardware_concurrency() noexcept;
Valor de retorno
Uma estimativa do número de contextos de thread de hardware. Se o valor não puder ser calculado ou não estiver bem definido, esse método retornará 0.
específicos da Microsoft
hardware_concurrency retorna o número de processadores lógicos, que corresponde ao número de threads de hardware que podem ser executados simultaneamente. Ele leva em conta o número de processadores físicos, o número de núcleos em cada processador físico e multithreading simultâneo em cada núcleo.
Antes do Windows 11 e do Windows Server 2022, os aplicativos eram limitados por padrão a um único grupo de processadores, tendo no máximo 64 processadores lógicos. Isso limitou o número de threads executados simultaneamente a 64. Para obter mais informações, consulte Grupos de processadores.
A partir do Windows 11 e do Windows Server 2022, os processos e seus threads têm afinidades de processador que, por padrão, abrangem todos os processadores do sistema e em vários grupos em máquinas com mais de 64 processadores. O limite no número de threads simultâneos é agora o número total de processadores lógicos no sistema.
id classe
Fornece um identificador exclusivo para cada thread de execução no processo.
class thread::id {
id() noexcept;
};
Comentários
O construtor padrão cria um objeto que não se compara igual ao objeto thread::id para qualquer thread existente.
Todos os objetos thread::id construídos por padrão são iguais.
join
Bloqueia até que o thread de execução associado ao objeto chamador seja concluído.
void join();
Comentários
Se a chamada for bem-sucedida, as chamadas subsequentes para get_id para o objeto chamador retornarão um thread::id padrão que não se compara igual ao thread::id de qualquer thread existente; Se a chamada não for bem-sucedida, o valor retornado por get_id não será alterado.
joinable
Especifica se o thread associado é joinable.
bool joinable() const noexcept;
Valor de retorno
true se o thread associado for joinable; caso contrário, false.
Comentários
Um objeto thread pode ser unido se get_id() != id().
native_handle
Retorna o tipo específico de implementação que representa o identificador de thread. O identificador de thread pode ser usado de maneiras específicas de implementação.
native_handle_type native_handle();
Valor de retorno
native_handle_type é definido como um Win32 HANDLE convertido como void *.
thread::operator=
Associa o thread de um objeto especificado ao objeto atual.
thread& operator=(thread&& Other) noexcept;
Parâmetros
Other
Um objeto thread.
Valor de retorno
*this
Comentários
O método chama desanexar se o objeto chamador for joinable.
Depois que a associação é feita, Other é definido como um estado construído por padrão.
swap
Troca o estado do objeto pelo de um objeto thread especificado.
void swap(thread& Other) noexcept;
Parâmetros
Other
Um objeto thread.
thread construtor
Constrói um objeto thread.
thread() noexcept;
template <class Fn, class... Args>
explicit thread(Fn&& F, Args&&... A);
thread(thread&& Other) noexcept;
Parâmetros
F
Uma função definida pelo aplicativo para executar no thread.
A
Uma lista de argumentos a serem passados para F.
Other
Um objeto thread existente.
Comentários
O primeiro construtor constrói um objeto que não está associado a um thread de execução. O valor retornado por get_id para o objeto construído é thread::id().
O segundo construtor constrói um objeto que está associado a um novo thread de execução. Executa a pseudo-função INVOKE definida em <functional>. Se não houver recursos suficientes disponíveis para iniciar um novo thread, a função lançará um objeto system_error que tenha um código de erro de resource_unavailable_try_again. Se a chamada para F terminar com uma exceção não detetada, terminate será chamada. A chamada para F não deve fazer com que o thread saia prematuramente, como chamando ExitThread ou _endthreadex.
O terceiro construtor constrói um objeto associado ao thread associado a Other.
Other é então definido como um estado construído por padrão.
Ver também
de referência de arquivos de cabeçalho
<thread>