threads_posix
Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
| — | threads_posix [2023/09/12 16:14] (atual) – criada - edição externa 127.0.0.1 | ||
|---|---|---|---|
| Linha 1: | Linha 1: | ||
| + | ====== Threads POSIX ====== | ||
| + | |||
| + | |||
| + | Compilação de um programa C com suporte as threads POSIX: | ||
| + | |||
| + | ===== Funções ===== | ||
| + | |||
| + | * [[pthread_detach]] | ||
| + | * [[pthread_self]] | ||
| + | * [[pthread_exit]] | ||
| + | * [[pthread_create]] | ||
| + | * [[pthread_join]] | ||
| + | * [[pthread_mutex_lock]] | ||
| + | * [[pthread_mutex_lock]] | ||
| + | |||
| + | ===== Concorrência entre threads ===== | ||
| + | Este programa não implementa a concorrência de acesso a variável '' | ||
| + | |||
| + | <code c> | ||
| + | #include < | ||
| + | #include < | ||
| + | #include < | ||
| + | #include < | ||
| + | #include < | ||
| + | |||
| + | #include < | ||
| + | |||
| + | #define LOOP 50 | ||
| + | |||
| + | int iContador; | ||
| + | |||
| + | void * teste_thread(void * pArg ) | ||
| + | { | ||
| + | int i, old; | ||
| + | for( i = 0; i < LOOP; i++) | ||
| + | { | ||
| + | old = iContador; | ||
| + | printf(" | ||
| + | iContador = old + 1; | ||
| + | } | ||
| + | | ||
| + | } | ||
| + | |||
| + | int main(void) | ||
| + | { | ||
| + | | ||
| + | |||
| + | | ||
| + | |||
| + | | ||
| + | | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Este programa implementa a concorrência de acesso a variável '' | ||
| + | <code c> | ||
| + | #include < | ||
| + | #include < | ||
| + | #include < | ||
| + | #include < | ||
| + | #include < | ||
| + | #include < | ||
| + | #include < | ||
| + | #include < | ||
| + | #include < | ||
| + | |||
| + | #include < | ||
| + | |||
| + | #define LOOP 50 | ||
| + | |||
| + | pthread_mutex_t contador_mutex = PTHREAD_MUTEX_INITIALIZER; | ||
| + | int iContador; | ||
| + | |||
| + | void * teste_thread(void * pArg ) | ||
| + | { | ||
| + | int i, old; | ||
| + | for( i = 0; i < LOOP; i++) | ||
| + | { | ||
| + | pthread_mutex_lock(& | ||
| + | old = iContador; | ||
| + | printf(" | ||
| + | iContador = old + 1; | ||
| + | pthread_mutex_unlock(& | ||
| + | sleep(1); | ||
| + | } | ||
| + | | ||
| + | } | ||
| + | |||
| + | int main(void) | ||
| + | { | ||
| + | | ||
| + | |||
| + | | ||
| + | |||
| + | | ||
| + | | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | | ||
| + | } | ||
| + | </ | ||