Podcast
Questions and Answers
Quais são as razões pelas quais a utilização de funções da biblioteca C standard dentro de threads pode levar a perdas de memória?
Quais são as razões pelas quais a utilização de funções da biblioteca C standard dentro de threads pode levar a perdas de memória?
Qual é a solução para evitar perdas de memória quando se utilizam funções da biblioteca C standard dentro de threads?
Qual é a solução para evitar perdas de memória quando se utilizam funções da biblioteca C standard dentro de threads?
O que é importante consultar ao utilizar threads em contexto multi-thread?
O que é importante consultar ao utilizar threads em contexto multi-thread?
Quais são os parâmetros necessários para criar uma thread com _beginthreadex?
Quais são os parâmetros necessários para criar uma thread com _beginthreadex?
Signup and view all the answers
Quais são as consequências de utilizar CreateThread e ExitThread em vez de _beginthreadex e _endthreadex?
Quais são as consequências de utilizar CreateThread e ExitThread em vez de _beginthreadex e _endthreadex?
Signup and view all the answers
O que é duplicado para cada execução da função em um thread?
O que é duplicado para cada execução da função em um thread?
Signup and view all the answers
O que é o comportamento habitual de cada execução da função em um thread?
O que é o comportamento habitual de cada execução da função em um thread?
Signup and view all the answers
Quais são as funções utilizadas para criar e terminar threads em Win32?
Quais são as funções utilizadas para criar e terminar threads em Win32?
Signup and view all the answers
O que é recomendável fazer para evitar problemas de compatibilidade em threads em Win32?
O que é recomendável fazer para evitar problemas de compatibilidade em threads em Win32?
Signup and view all the answers
Quais são os benefícios de utilizar _beginthreadex em vez de CreateThread?
Quais são os benefícios de utilizar _beginthreadex em vez de CreateThread?
Signup and view all the answers
Study Notes
Threads em Win32
- Muitos recursos do processo são automaticamente partilhados, é necessário usar sincronização.
- Threads em Windows (família NT) são as verdadeiras entidades de execução no sistema NT.
- Cada processo tem pelo menos uma thread (thread inicial ou principal).
- A partir de uma thread pode-se lançar outra thread.
- A criação da thread está associada a uma função e quando essa função terminar, a thread também termina.
Diferenças entre processos e threads
- Um processo tem:
- Um espaço de endereçamento (zonas de código e de dados)
- Uma identidade única
- Uma prioridade (usada como base de cálculo da prioridade das sua threads)
- Uma ou mais threads
- Uma thread tem:
- Pilha própria dentro do espaço do processo a que pertence
- Uma identidade própria
- Recursos atribuídos (pode incluir zonas de dados próprias)
- Capacidade de executar instruções
- Uma prioridade
API Win32 para lidar com threads
- CreateThread: Cria uma thread nova
- ExitThread: Termina a thread
- TerminateThread: Termina a uma thread (evitar usar)
- GetExitCodeThread: Obtém o código de terminação
- SuspendThread: Suspende a execução de uma thread
- ResumeThread: Recomeça a execução de uma thread
- GetCurrentThread: Obtém um handle local da thread
- GetCurrentThreadId: Obtém o identificador da thread
- OpenThread: Obtém um handle para uma thread
Criação de threads
- HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, ...)
- _beginthread(void(__cdecl *start_address)(void *), unsigned stack_size, void *arglist)
- _beginthreadex(void *security, unsigned stack_size, void *arglist)
Questões de compatibilidade
- A utilização de funções da biblioteca C standard dentro de threads pode levar a que haja pequenas perdas de memória (memory leaks)
- Soluções:
- Usar _beginthreadex em vez de CreateThread
- Usar _endthreadex em vez de ExitThread
- Consultar sempre a documentação pormenorizada acerca do API quanto ao seu uso no contexto multi-thread
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Description
Quiz sobre threads em Windows NT, incluindo características e funcionalidades.