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) | ||
+ | { | ||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | } | ||
+ | </ | ||
threads_posix.txt · Última modificação: 2023/09/12 16:14 por 127.0.0.1