| Como implementar Threads | |||||||||||||
| Links úteis. | |||||||||||||
|
Nessa página explica-se, utilizando um exemplo simples, como fazer utilizar Threads em programas escritos em C.
observe o programa exemplo (thrd.c) a seguir:
/* 1 */ #include <pthread.h>
/* 2 */ #include "funcoes.h"
/* 3 */ pthread_t meutid;
/* 4 */ pthread_t outrosTIDs[2];
/* 5 */ void *arg;
int main( void )
{
/* 6 */ meutid = pthread_self();
printf ("Meu Thread ID = %d\n",meutid);
printf("Disparando Thread 1");
/* 7 */ pthread_create(&outrosTIDs[0], NULL, sub_a, arg );
printf("(id = %d)\n", outrosTIDs[0]);
printf("Disparando Thread 2");
/* 8 */ pthread_create(&outrosTIDs[1], NULL, sub_b, arg );
printf("(id = %d)\n", outrosTIDs[1]);
printf("Aguardando finalizacao dos Threads
id=%d e id=%d\n",
outrosTIDs[0], outrosTIDs[1]);
/* 9 */ pthread_join(outrosTIDs[1], NULL);
/*10 */ pthread_join(outrosTIDs[0], NULL);
printf("Threads id=%d e id=%d finalizados\n",
outrosTIDs[0], outrosTIDs[1]);
}
Nas linhas /* 1 */ e /* 2 */ estão as diretivas para inclusão de bibliotecas. A primeira, pthread.h contém a biblioteca de funçõespara implementação dos POSIX threads. Portable Operating System Interface for UNIX é o padrão da 1003.1 IEEE que define a interface entre programas e o sistema operacional UNIX. Esse padrão facilita a portabilidade dos programas de UNIX para Linux. A segunda biblioteca funcoes.h contém os protótipos das funções que serão executadas independentemente da função principal main(). As linhas /* 3 */ e /* 4 */ contém declarações de variáveis que armazenarão os identificadores dos threads. Na linha /* 5 */ declara-se um ponteiro para um tipo desconhecido. Essa é uma estratégia para se passar parâmetros para os threads.
Na linha /* 6 */, a função pthread_self() retorna o valor do identificador do thread principal. As linhas /* 7 */ e /* 8 */ criam e disparam os outros threads usando a função pthread_create(). A lista de parâmetros é a seguinte: As linhas /* 9 */ e /*10 */ utilizam a função pthread_join(). Essa função suspende o thread que a chamou até que o thread cujo identificador foi passado como parâmetro seja completado. O segundo parâmetro dessa função é o status do thread. Para compilar esse programa exemplo, faça o download dos fontes funcoes.h, funcoes.c, thrd.c e do Makefile que estão comprimidos no arquivo threads.zip. Depois, basta digitar make no prompt do Linux. Para executar, digite thrd e veja o resultado. |
|||||||||||||
| Como Criar um Makefile | |||||||||||||
| Tutorial de Programação em C para Unix | |||||||||||||
| Biblioteca GNU para C | |||||||||||||
| Quaisquer dúvidas: | |||||||||||||
| E-mail: | andre_gradvohl@yahoo.com | ||||||||||||
|
|||||||||||||
| Número de Visitantes: | |||||||||||||