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:
1. identificador do thread, do tipo pthread_t;
2. atributos do thread, do tipo pthread_attr_t, não usados nesse exemplo (NULL);
3. função onde está implementado o thread;
4. argumentos para o thread, do tipo void *.
O retorno da função pthread_create() é zero se o thread foi criado normalmente.

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
Counter
Número de Visitantes: