Sistemas Operativos 2 - Threads em Win32

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

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?

  • Due to the incorrect usage of _beginthreadex and _endthreadex
  • Due to the incorrect usage of CreateThread and ExitThread (correct)
  • Due to the creation of multiple threads
  • Due to the lack of thread synchronization

Qual é a solução para evitar perdas de memória quando se utilizam funções da biblioteca C standard dentro de threads?

  • Usar _beginthread em vez de CreateThread e ExitThread
  • Usar _beginthreadex em vez de CreateThread e _endthreadex em vez de ExitThread (correct)
  • Usar _endthreadex em vez de ExitThread
  • Usar CreateThread em vez de _beginthreadex

O que é importante consultar ao utilizar threads em contexto multi-thread?

  • A documentação pormenorizada do API (correct)
  • A documentação do _beginthreadex
  • A documentação do Windows
  • A documentação do Visual Studio

Quais são os parâmetros necessários para criar uma thread com _beginthreadex?

<p>Função da thread, tamanho da pilha e descrição de segurança (A)</p> Signup and view all the answers

Quais são as consequências de utilizar CreateThread e ExitThread em vez de _beginthreadex e _endthreadex?

<p>Perdas de memória (D)</p> Signup and view all the answers

O que é duplicado para cada execução da função em um thread?

<p>As variáveis locais (D)</p> Signup and view all the answers

O que é o comportamento habitual de cada execução da função em um thread?

<p>Cada execução ocorre no espaço local da thread (A)</p> Signup and view all the answers

Quais são as funções utilizadas para criar e terminar threads em Win32?

<p>_beginthreadex e _endthreadex (A)</p> Signup and view all the answers

O que é recomendável fazer para evitar problemas de compatibilidade em threads em Win32?

<p>Consultar a documentação do API (B)</p> Signup and view all the answers

Quais são os benefícios de utilizar _beginthreadex em vez de CreateThread?

<p>Menos perdas de memória (A)</p> Signup and view all the answers

Flashcards are hidden until you start studying

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.

Quiz Team

More Like This

Use Quizgecko on...
Browser
Browser