Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Libpthread (Português)

From 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 07 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 7 May 2013, at 23:58.
161 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.

×