This page was last modified 21:22, 26 October 2007.
Libpthread (Português)
From Forum Nokia Wiki
Original: Libpthread
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.
| Related Discussions | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| P.I.P.S. - 'PIPS is POSIX on Symbian'- enables easy migration of desktop app | chirag_cel | General Symbian C++ | 1 | 2007-01-18 09:50 |
| error including vector | Lichtens | Open C | 4 | 2008-06-30 11:08 |
| Nokia 3220 problem | whichet | Mobile Java General | 3 | 2005-09-29 21:57 |
| Open C FAQ | Nokia Ron | Open C | 0 | 2007-03-02 18:05 |
| Error when pipe call is encountered in emulator S60 | Rekha | Open C | 3 | 2007-09-11 11:31 |
