🎧 New: AI-Generated Podcasts Turn your study notes into engaging audio conversations. Learn more

Sistemas Operativos 2 - Threads em Win32
10 Questions
0 Views

Sistemas Operativos 2 - Threads em Win32

Created by
@PerfectWombat3484

Podcast Beta

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</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</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</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</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</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</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</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 Quizzes Like This

    Windows-Benutzerverwaltung
    3 questions
    Windows Server 2022 and Network Topologies Quiz
    10 questions
    Windows Event Viewer Flashcards
    20 questions
    Introduction au Bureau Windows
    30 questions
    Use Quizgecko on...
    Browser
    Browser