O Laboratório Threads
Por: Adam Samenezes • 27/9/2023 • Trabalho acadêmico • 4.114 Palavras (17 Páginas) • 45 Visualizações
Exercício 1
- Analise seu código e o comente detalhadamente. Código comentado no arquivo thread-create.c
- A ordem de criação, a vação e encerramento dos threads é a mesma? Por quê?
Não necessariamente são as mesmas, pois a criação é determinada por um loop sequencial e a ordem de execução acontece em paralelo.
- Desenhe o diagrama de tempo de sua execução.
_________________________________________________________________________________________
| Tempo | Ação |
_________________________________________________________________________________________
| 0 | |
| O programa é iniciado. | | |
| 1 | |
| A função “main()” é chamada. | | |
| 2 | |
| A função “pthread_create()” é chamada para criar a primeira thread. | | |
| 3 | |
| A função “pthread_create()” é chamada para criar a segunda thread. | | |
| ... | |
|
| | |
| 15 | |
| A função “pthread_create()” é chamada para criar a úl ma thread. | | |
| 16 | |
| Os threads começam a ser executadas pelo escalonador do sistema operacional. | | |
| 17 | |
| A thread 0 imprime "t00: Olá!". | | |
| 20 | |
| A thread 0 imprime "t00: Tchau!". | | |
| ... | |
|
| | |
| 41 | |
| A thread 15 imprime "t15: Olá!". | | |
| 44 | |
| A thread 15 imprime "t15: Tchau!". | | |
| 51 | |
| A função “main()” imprime "Main: fim". | | |
| 52 | |
| A função “pthread_exit()” é chamada para encerrar a thread “main()”. | | |
| 53 | |
| O programa é encerrado. | | |
_________________________________________________________________________________________
Exercício 2
- Analise seu código e o comente detalhadamente. Código comentado no arquivo thread-join.c
- Explique o obje vo do parâmetro a r e da chamada pthread_join.
O parâmetro a r é uma estrutura de atributos do thread. A estrutura de atributos é usada para controlar o comportamento do thread. No caso deste código, o parâmetro a r é usado para definir o estado do thread como JOINABLE. A função pthread_join() é usada para esperar a thread terminar.
- Desenhe o diagrama de tempo de sua execução.
________________________________________________________________________________________
| Tempo | Ação |
________________________________________________________________________________________
| 0 | |
| O programa é iniciado. | | | |
| 1 | |
| A função “main()” é chamada. | | | |
| 2 | |
| A função “pthread_a r_init()” é chamada para inicializar os atributos. | | | |
| 3 | |
| A função “pthread_a r_setdetachstate()” é chamada para configurar os atributos. | | | |
| 4 | |
| A função “pthread_create()” é chamada para criar a primeira thread. | | | |
| 5 | |
| A função “pthread_create()” é chamada para criar a segunda thread. | | | |
| ... | |
|
| | | |
| 16 | |
| A função “pthread_create()” é chamada para criar a úl ma thread. | | | |
| 17 | |
| Os threads começam a ser executados pelo escalonador do sistema operacional. | | | |
| 18 | |
| A thread 0 imprime "t00: Olá!". |
| | |
| 21 | |
| A thread 0 imprime "t00: Tchau!". |
| | |
| ... | |
|
|
| | |
| 42 | |
| A thread 15 imprime "t15: Olá!". |
| | |
| 45 | |
| A thread 15 imprime "t15: Tchau!". |
| | |
| 52 | |
| A função “main()” imprime "Main: aguardando thread 00". |
| | |
| 53 | |
| A função “pthread_join()” é chamada para aguardar a thread 0. |
| | |
| 56 | |
| A função “main()” imprime "Main: aguardando thread 01". |
| | |
| 57 | |
| A função “pthread_join()” é chamada para aguardar a thread 1. |
| | |
| ... | |
|
|
| | |
| 110 | |
| A função “main()” imprime "Main: aguardando thread 15". |
| | |
| 111 | |
| A função “pthread_join()” é chamada para aguardar a thread 15. |
| | |
| ... | |
|
|
| | |
| 118 | |
| A função “main()” imprime "Main: fim". |
| | |
| 119 | |
| A função “pthread_a r_destroy()” é chamada para destruir os atributos. |
| | |
| 120 | |
| A função “pthread_exit()” é chamada para encerrar a thread “main()”. |
| | |
| 121 | |
| O programa é encerrado. |
| | |
_________________________________________________________________________________________ Exercício 3
...