
Uma thread filha é também uma thread e, portanto, ela também pode criar threads filhas dela própria.
Na programação concorrente diferentes partes de um programa são executadas de forma simultânea, e colaboram entre si para atingir os objetivos da aplicação. Esta simultaneidade pode ser via vários processadores (programação paralela), ou via o compartilhamento no tempo de um mesmo processador, via sistema operacional. Trata-se de um estilo de programação cada vez mais importante à medida que mais computadores possuem múltiplos processadores (cores).
Rust embute nativamente todos os recursos necessários para programação concorrente. Ela permite a criação de Threads e a comunicação e sincronização entre Threads tanto via mensagens como via variáveis compartilhadas. Rust aproveita o conceito de Ownership (propriedade) e a verificação rigorosa de tipos para detectar em tempo de compilação erros que normalmente só apareceriam durante a execução. Como testar programas concorrentes é notadamente difícil, a programação concorrente fica muito mais fácil com Rust, pois o compilador ajuda muito.
Este curso descreve a criação e o uso de Threads no contexto da Linguagem de Programação Rust. É suposto que o aluno conhece o básico de Rust. Por exemplo, fez o meu curso "Curso Básico de Linguagem Rust" na Udemy (veja descrição do curso no site da Udemy) ou tem o conhecimento equivalente. É suposto que o aluno NÃO CONHECE NADA sobre Threads em Rust. Conhecimento básico de Closures é útil mas não estritamente necessário (veja descrição no site da Udemy do meu curso "Closures na Linguagem Rust").
As aulas são conduzidas através de exemplos com programas compiláveis e executáveis. Todos os programas exemplo usados estão disponíveis para download. Durante as aulas o instrutor utiliza o Visual Studio Code, mas o aluno acostumado com outra IDE (Ambiente Integrado de Desenvolvimento) poderá utilizá-la também.
As Threads em Rust são apresentadas e explicadas através dos programas exemplo. São abordados temas tais como Canais, Mutex, Scoped Threads, Arc, RwLock, Barrier, etc.