Sistemas Operativos 2 - Threads em Win32
10 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

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

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

Description

Quiz sobre threads em Windows NT, incluindo características e funcionalidades.

More Like This

Arquitetura do Windows NT
40 questions
Famílias Windows NT
40 questions
Sistemas Operativos Windows NT
40 questions
Biometric Security in Windows NT Networks
45 questions
Use Quizgecko on...
Browser
Browser