Wednesday, April 24, 2013

pthread_detach example c c++


NAME
     pthread_detach -- detach a thread

SYNOPSIS
     #include <pthread.h>

     int
     pthread_detach(pthread_t thread);

DESCRIPTION
     The pthread_detach() function is used to indicate to the implementation that storage for the thread
     thread can be reclaimed when the thread terminates.  If thread has not terminated, pthread_detach()
     will not cause it to terminate.  The effect of multiple pthread_detach() calls on the same target
     thread is unspecified.

RETURN VALUES
     If successful,  the pthread_detach() function will return zero.  Otherwise, an error number will be
     returned to indicate the error.  Note that the function does not change the value of errno, as it did
     for some drafts of the standard.  These early drafts also passed a pointer to pthread_t as the argu-
     ment.  Beware!

ERRORS
     pthread_detach() will fail if:

     [EINVAL]           The implementation has detected that the value specified by thread does not refer to
                        a joinable thread.

     [ESRCH]            No thread could be found corresponding to that specified by the given thread ID,
                        thread.

SEE ALSO
     pthread_join(3)

STANDARDS
     pthread_detach() conforms to ISO/IEC 9945-1:1996 (``POSIX.1'').

Example of pthread_detach

#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

void *t_function(void *data)
{
    char a[100000];
    int num = *((int *)data);
 printf("Thread Start\n");
    sleep(5);
 printf("Thread end\n");
}

int main()
{
    pthread_t p_thread;
    int thr_id;
    int status;
    int a = 100;

 printf("Before Thread\n"); 
    thr_id = pthread_create(&p_thread, NULL, t_function, (void *)&a);
    if (thr_id < 0)
    {
        perror("thread create error : ");
        exit(0);
    }
 

    pthread_detach(p_thread);
    pause();
    return 0;
}