//--------------------------------------------------------------
// create new thread
//--------------------------------------------------------------
pthread_t tid;
pthread_attr_t attr;
int code;
//int pthread_attr_init(pthread_attr_t *attr);
pthread_attr_init(&attr);
//int pthread_attr_setdetachstate(pthread_attr_t * attr, int detach - state);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
//int pthread_create(pthread_t * restrict thread, const pthread_attr_t * restrict attr, void *(*start_routine) (void *), void *restrict arg);
if ((code = pthread_create(&tid, &attr, thread_main, (void *) &new_connected_socket)) != 0)
{
fprintf(stderr, "[%d]Create new thread failed: %s\n", getpid(), strerror(code));
}
else
{
fprintf(stdout, "[%d]New thread created.\n", getpid());
}
//int pthread_attr_destroy(pthread_attr_t *attr);
pthread_attr_destroy(&attr);
// create new thread
//--------------------------------------------------------------
pthread_t tid;
pthread_attr_t attr;
int code;
//int pthread_attr_init(pthread_attr_t *attr);
pthread_attr_init(&attr);
//int pthread_attr_setdetachstate(pthread_attr_t * attr, int detach - state);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
//int pthread_create(pthread_t * restrict thread, const pthread_attr_t * restrict attr, void *(*start_routine) (void *), void *restrict arg);
if ((code = pthread_create(&tid, &attr, thread_main, (void *) &new_connected_socket)) != 0)
{
fprintf(stderr, "[%d]Create new thread failed: %s\n", getpid(), strerror(code));
}
else
{
fprintf(stdout, "[%d]New thread created.\n", getpid());
}
//int pthread_attr_destroy(pthread_attr_t *attr);
pthread_attr_destroy(&attr);
}
void *thread_main(void *arg)
{
int fd = *(int *) arg;
pthread_exit((void *) 0);
}