×
Namespaces

Variants
Actions

Libpthread (Português)

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

Compatibilidade
Plataforma(s):
Symbian

Artigo
Tradução:
Originado de Libpthread
Por kyllercg
Última alteração feita por hamishwillee em 08 May 2013


Contents

libpthread

A libpthread é uma Bliblioteca Open C que segue o padrão POSIX (IEEE Std1003.1c).

libpthread contém cerca de 56 funções implementadas de um total de 94 especificadas pelo POSIX. Incluindo algumas das APIs mais usadas, tais como: pthread_create, pthread_self, pthread_equal, pthread_join e pthread_exit.


pthread_create

A função pthread_create falha se: o sistema não dispões dos recursos necessários para criar uma nova thread; ou se os limites no número de threads em um mesmo processo PTHREAD_THREADS_MAX impostos pelo sistema será excedido.

O código a seguir mostra a criação de um thread.

#include <stdio.h>
#include <pthread.h>
 
// Necessário quando compilando com o GCCE e usando a entrada principal main()
#ifdef __GCCE__
#include <staticlibinit_gcce.h>
#endif
 
void *TestFunction(void*)
{
printf("Função de teste....\n");
return NULL;
}
 
int CreateThread()
{
pthread_t thread_hdl;
if(pthread_create(&thread_hdl,NULL,TestFunction, NULL) != 0)
{
printf("Criação de thread falhou \n");
return -1;
}
}
int main(void)
{
CreateThread();
printf("Oi Open C!\n");
return 0;
}
 
// Bibliotecas requeridas são: libc_r.lib libpthread.lib libthr.lib


pthread_join

A função pthread_join suspende a execução da thread que a chama até que o alvo thrHandle finalize sua execução ou se o alvo thrHandle já finalizou.

int pthread_join (pthread_t thrHandle, void **retValPtr);


pthread _equal

A função pthread_equal retornará diferente de zero se os IDs t1 e t2 correspondem à mesma thread, caso contrário retornará zero.

int pthread_equal (pthread_t t1, pthread_t t2);

O código a seguir mostra o uso e a funcionalidade de pthread_equal():

void *ThreadFunction(void*)
{
pthread_exit(0);
return NULL;
}
 
void MainFunction()
{
pthread_t thread_1, thread_2;
/* Cria Thread-1 */
if(pthread_create(&thread_1, NULL, ThreadFunction, NULL) != 0)
{
perror("Flaha na criação de Thread-1\n");
return -1;
}
/* Cria Thread-2. */
if(pthread_create(&thread_2, NULL, ThreadFunction, NULL) != 0)
{
perror("Flaha na criação de Thread-2\n");
return -1;
}
/* pthread_equal deve retornar zero pois as threads não são iguais */
if(pthread_equal(thread_1, thread_2) != 0)
{
printf("Ambas threads correspondem à mesma thread\n");
return -1;
}
}


pthread_exit

A função pthread_exit não pode retornar nenhum valur. A função pthread_exit termina a thread que a chama e torna o valor retValPtr disponível para qualquer associação com a thread que terminou.

void pthread_exit (void *retValPtr);

Chamar pthread_exit() resulta em terminar o processo com estado de saída 0 depois que a última thread seja finalizada.


pthread_detach

pthread_detach é usada para separar uma thread.

libc_r.lib libpthread.lib libthr.lib 
 
#include <pthread.h>
int pthread_detach (pthread_t thrHandle);

Em caso de sucesso, a função pthread_detach retornará zero. Caso contrário um número de erro será retornado indicando o erro específico.

A função pthread_detach é usada para indicar que o armazenamento da thread thrHandle pode ser recuperada depois que a thread terminar. Se thrHandle ainda não terminou, pthread_detach não irá causar seu término. O efeito de múltiplas chamadas a pthread_detach no mesmo alvo não é especificada.


Nota

Por favor, adicione os exemplos de código em libpthread se possível.

This page was last modified on 8 May 2013, at 02:58.
66 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×