Desenvolvimento

24 dez, 2012

Melhores de 2012 – Um olhar minucioso nas Threads Linux: Threads Locais

Publicidade

O que tivemos de mais interesse em 2012? Quais foram melhores artigos, as opiniões que geraram maiores discussões? Isso é o que você vai encontrar nessa seleção de artigos que fizemos especialmente para você: os melhores conteúdos de 2012. Já que final e início de ano é sempre um tempo propício para fazer um balanço do que passou e o planejamento para o que ainda virá, esperamos que os artigos publicados aqui te ajudem nisso!

Boas festas e feliz 2013! Um abraço da equipe de Redação do iMasters!

Threads estão por toda parte. Mesmo agora, enquanto você navega nesta página, as threads estão envolvidas no processo. É muito provável que você esteja com mais de uma aba aberta no navegador e cada uma tenha pelo menos uma thread associada a ela. O servidor que abastece essa página executa várias threads, a fim de servir múltiplas conexões simultaneamente. Pode haver exemplos incontáveis de threads, mas vamos nos concentrar em uma execução específica. Ou seja, a implementação Linux de threads.

É difícil de acreditar que os antigos kernels Linux não suportavam threads. Em vez disso, todo o “threading” era realizado inteiramente no espaço do usuário por uma biblioteca pthread(POSIX thread) escolhida para o programa específico. Isso me faz lembrar a minha tentativa de implementar multitarefa em DOS quando eu estava na faculdade – possível, mas cheio de dor de cabeça.

Os kernels mais modernos, pelo contrário, possuem suporte completo para threads, que, do ponto de vista do kernel, são assim chamados “processos leves”. Eles são geralmente organizados em grupos de threads, que, por sua vez, representam processos como conhecemos. Na verdade, a função getpid libc (e chamada de sistema sys_getpid) retorna um identificador de um grupo de thread.

Deixe-me reiterar – a melhor explicação é uma explicação por meio de um exemplo. Neste artigo, vou cobrir o processo de criação de thread em Linux de 64 bits rodando em um PC usando FASM.

Continue lendo sobre Threads Locais

Leia também sobre Threads Remotos