0% found this document useful (0 votes)
106 views14 pages

Learn Multithreading With Modern C++

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
106 views14 pages

Learn Multithreading With Modern C++

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Learn

Multithreading
with Modern
C++
1
Avisos de direitos autorais
"Todos os direitos reservados" é uma frase que se originou na lei de
direitos autorais como parte dos avisos de direitos autorais. Isso indica
que o detentor do direito autoral reserva, ou detém para seu próprio
uso, todos os direitos fornecidos pela lei de direitos autorais, como
distribuição, apresentação e criação de obras derivadas; ou seja, eles
não renunciaram a nenhum desses direitos. A lei de direitos autorais na
maioria dos países não exige mais esses avisos, mas a frase persiste. O
entendimento original da frase como relacionado especificamente ao
direito autoral pode ter sido suplantado pelo uso comum da frase para
se referir a qualquer direito legal, embora provavelmente seja entendido
como referindo-se pelo menos ao direito autoral.

https://pt.wikipedia.org/wiki/Todos_os_direitos_reservados

Copyright

Copyright© 2001-2022, Esse Ebook feito por APOSTILAS em MASSA.


Todos os direitos reservados. Todos os textos, imagens, gráficos,
animações, vídeos, músicas, sons e outros materiais são protegidos por
direitos autorais e outros direitos de propriedade intelectual
pertencentes à esse Ebook feito por APOSTILAS em MASSA , suas
subsidiárias, afiliadas e licenciantes.

Esse Ebook feito por APOSTILAS em MASSA é, também, proprietário dos


direitos autorais de desenvolvimento, seleção, coordenação,
diagramação e disposição dos materiais neste site. É expressamente
vedada a cópia ou reprodução destes materiais para uso ou distribuição
comercial, a modificação destes materiais, sua inclusão em outros
websites e o seu envio e publicação em outros meios digitais e físicos, ou
de qualquer outra forma dispor de tais materiais sem a devida
autorização, estando sujeito às responsabilidades e sanções legais.

Marcas

Todas as marcas exibidas neste Ebook são de propriedade exclusiva do

2
Ebook feito por APOSTILAS em MASSA, suas subsidiárias, afiliadas ou
licenciantes. É estritamente vedado o uso desautorizado de quaisquer
destas marcas, sob qualquer meio e forma e a qualquer título, estando
sujeito às responsabilidades e sanções legais.

Direito autoral tradicional, definido pela expressão “todos os direitos


reservados”. Significa que todos os direitos relativos àquela obra, como
reprodução, alteração, distribuição comercialização, pe...

Direitos autorais do Ebook do APOSTILAS em MASSA (2024)

Todos os textos, fotos e imagens, mapas, logomarca e mascote


apresentados no Ebook do APOSTILAS em MASSA (2024) são protegidos
por lei.

Qualquer reprodução (total ou parcial) do conteúdo divulgado no site,


sem a prévia autorização, é proibida.

NENHUM meio de divulgação (jornais, revistas, televisão, websites, sites,


minisites, miniblog, blogs e etc.), empresas, pessoas físicas ou qualquer
outro veículo de comunicação (folders, panfletos, cartões de visitas,
trabalhos acadêmicos, apresentações etc.) está autorizado a utilizar as
informações e/ou imagens mesmo que coloque os créditos.

----------------------

CÓDIGO PENAL - Dos crimes contra a propriedade intelectual

Violação de direito autoral - Art. 184

Pena de detenção de 3 meses a 1 ano.

Se a violação consistir em reprodução, por qualquer meio, com intuito


de lucro, qualifica o crime.

Pena de reclusão de 1 ano a 4 anos.

----------------------

DIREITOS AUTORAIS - Lei 9.610 de 19 de fevereiro de 1998.

3
Art. 7 - A lei considera que as obras protegidas, dentre outras, são:
textos, obras fotográficas, ilustrações, desenhos, programa de
computador, bases de dados e outras obras, que, por sua seleção,
organização ou disposição de seu conteúdo, constituam uma criação
intelectual.

Art. 28 - Cabe ao autor o direito exclusivo de utilizar, fruir e dispor da


obra literária, artística ou científica.

Veja a íntegra da lei em: http://www.planalto.gov.br/CCIVIL_


03/leis/9610.htm

----------------------

Sobre o Copyright

O © Copyright é um símbolo do direito autoral, uma forma de direito


intelectual.

Também denominado direitos de autor ou direitos autorais, o copyright


impede a cópia ou exploração de qualquer obra sem que haja permissão
para tal. Toda obra original incluindo música, imagens, vídeos,
documentos digitais, fotografias, arranjo gráfico etc., são trabalhos que
dão ao proprietário direito exclusivo.

O símbolo do copyright © quando presente em uma obra restringe a sua


impressão e/ou publicação sem autorização prévia, impedindo que haja
benefícios financeiros para outros que não sejam o autor ou o editor da
obra.

2024
#HistoriaEmC #DadosEmC #VariaveisEmC #InteirosEmC
#PontoFlutuante #FloatEmC #VetorEmC #MatrizEmC

4
#PonteirosEmC #StructsEmC #UnionEmC #ArquivosEmC
#BlockhainEmC #BitcoinEmC #CriptomoedasEmC
#CriptosEmC #ArvoresEmC #BuscaBinariaEmC
#BancoDeDadosEmC #GraficosEmC ClienteServidorEmC
#TecnologiaEmC #ProgramandoEmC #ProgramarEmC
#AprenderEmC #AprendaEmC #AprendaFacilEmC
#AprendaRapidoEmC

https://www.youtube.com/hashtag/AprendendoEmC
https://www.youtube.com/hashtag/AprendizagemEmC
https://www.youtube.com/hashtag/DadosEmC
https://www.youtube.com/hashtag/VariaveisEmC
https://www.youtube.com/hashtag/InteirosEmC
https://www.youtube.com/hashtag/PontoFlutuante
https://www.youtube.com/hashtag/FloatEmC
https://www.youtube.com/hashtag/VetorEmC
https://www.youtube.com/hashtag/MatrizEmC
https://www.youtube.com/hashtag/PonteirosEmC
https://www.youtube.com/hashtag/StructsEmC
https://www.youtube.com/hashtag/UnionEmC
https://www.youtube.com/hashtag/ArquivosEmC
5
https://www.youtube.com/hashtag/BlockhainEmC
https://www.youtube.com/hashtag/BitcoinEmC
https://www.youtube.com/hashtag/CriptomoedasEmC
https://www.youtube.com/hashtag/CriptosEmC
https://www.youtube.com/hashtag/ArvoresEmC
https://www.youtube.com/hashtag/BuscaBinariaEmC
https://www.youtube.com/hashtag/BancoDeDadosEmC
https://www.youtube.com/hashtag/GraficosEmC
https://www.youtube.com/hashtag/ClienteServidorEmC
https://www.youtube.com/hashtag/TecnologiaEmC
https://www.youtube.com/hashtag/ProgramandoEmC
https://www.youtube.com/hashtag/ProgramarEmC
https://www.youtube.com/hashtag/AprenderEmC
https://www.youtube.com/hashtag/AprendaEmC
https://www.youtube.com/hashtag/AprendaFacilEmC
https://www.youtube.com/hashtag/AprendaRapidoEmC

Multithreading is an important concept in modern


C++ programming that allows you to execute

6
multiple threads concurrently, which can improve
the performance and responsiveness of your
programs. Here’s a guide to get you started with
multithreading in modern C++:

1. Basic Concepts
Before diving into the code, let's cover some basic
concepts:

Thread: A lightweight process that shares the


same memory space with other threads in the
same process.
Concurrency: Running multiple tasks seemingly
simultaneously.
Parallelism: Performing multiple tasks
simultaneously, often on multiple CPU cores.
2. Thread Library
In C++11 and later, the <thread> library provides
support for multithreading. Here are some key
components:

7
std::thread: A class that represents a single thread
of execution.
std::mutex: A class for mutual exclusion to protect
shared data.
std::lock_guard and std::unique_lock: Helper
classes for managing mutexes.
std::condition_variable: A class used for
synchronization between threads.
3. Creating and Managing Threads
Here’s a basic example of creating and running
threads using std::thread:

código em C++
#include <iostream>
#include <thread>

void print_message(const std::string& message) {


std::cout << message << std::endl;
8
}

int main() {
// Create a thread that runs the print_message
function
std::thread t(print_message, "Hello from the
thread!");

// Wait for the thread to finish


t.join();

std::cout << "Hello from the main thread!"


<< std::endl;
return 0;
}
4. Using Mutexes
When multiple threads access shared resources,
you need to protect these resources using
mutexes:
9
código em C++
#include <iostream>
#include <thread>
#include <mutex>

std::mutex mtx;
int shared_data = 0;

void increment() {
std::lock_guard<std::mutex> lock(mtx);
++shared_data;
std::cout << "Shared data incremented to "
<< shared_data << std::endl;
}

int main() {
std::thread t1(increment);
10
std::thread t2(increment);

t1.join();
t2.join();

return 0;
}
5. Condition Variables
Condition variables are used for signaling between
threads. Here’s a simple example:

código em C++
#include <iostream>
#include <thread>
#include <mutex>
#include <condition_variable>

std::mutex mtx;
11
std::condition_variable cv;
bool ready = false;

void waiting_thread() {
std::unique_lock<std::mutex> lock(mtx);
cv.wait(lock, []{ return ready; });
std::cout << "Thread resumed" << std::endl;
}

void signaling_thread() {

std::this_thread::sleep_for(std::chrono::seconds(1
));
{
std::lock_guard<std::mutex> lock(mtx);
ready = true;
}
cv.notify_one();

12
}

int main() {
std::thread w(waiting_thread);
std::thread s(signaling_thread);

w.join();
s.join();

return 0;
}
6. Thread Safety and Best Practices
Avoid Data Races: Use mutexes or other
synchronization primitives to protect shared
resources.
Minimize Lock Contention: Keep the critical
sections of your code as short as possible.
Prefer std::lock_guard or std::unique_lock: These
RAII classes ensure that locks are released when
13
they go out of scope.
Use std::async and Futures: For easier task-based
parallelism, use std::async and std::future.
7. Further Reading
“C++ Concurrency in Action” by Anthony Williams:
A comprehensive guide to multithreading in C++.
The C++ Standard Library Documentation: For
detailed information on threading and
synchronization primitives.
Conclusion
Multithreading in C++ can greatly enhance
performance and responsiveness, but it requires
careful management of shared resources and
synchronization. Start with the basics, and as you
gain experience, you’ll be able to handle more
complex scenarios and improve the efficiency of
your programs.

14

You might also like