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: | |||||||||||||