"Grosso modo, enquanto que um processo corresponde à execução dum programa, um thread corresponde à execução duma função."Explique esta afirmação à luz da API POSIX para threads e do ciclo de vida dum thread POSIX.
void *fun(void *arg)
Os seus programas deverão usar a biblioteca libpthread
. Não se esqueça de indicá-lo ao compilador, i.e. especificar -lpthread
na linha de comandos.
Deverá ainda definir a variável _REENTRANT
na linha de comandos do
gcc
, usando o argumento -D_REENTRANT
, para garantir que
o compilador usa as funções apropriadas da biblioteca C.
pid
e tid
e terminar retornando um
número inteiro entre 1 e 3 distinto do retornado pelos restantes
threads. O thread principal deve escrever no
terminal o seu pid
e o valor retornado por cada um dos outros
threads.pid
s dos diferentes
threads dum programa? E os seus tids
?
tid
e terminar retornando um número
inteiro entre 1 e n distinto do retornado pelos restantes
threads.Dica Usa a função strtol
para converter o argumento
da linha de comando num inteiro.
Teste o seu programa para diferentes valores de n.
O seu programa deverá aceitar 2 argumentos de tipo inteiro: o número de elementos do vector e o número de threads que farão a sua inicialização, por esta ordem.
O thread principal deverá processar os argumentos e criar os threads que fazem a inicialização do vector. Após a inicialização do vector, o thread principal deverá listar cada um dos elementos do vector.
Cada um dos threads criados pelo thread principal deverá inicicializar a sua parte do vector. O elemento i
do vector deverá ser inicializado com o inteiro i.
Dica Identifique os dados que cada thread precisa para processar o seu sub-vector e defina uma estrutura de dados que o thread principal usará para passar esses dados como argumento aos restantes threads.
Cada um dos threads deverá imprimir informação no stdout para ilustrar que funciona correctamente.
Dica Use as operações divisão inteira e resto da divisão inteira.
This document was translated from LATEX by HEVEA.