线程
头文件
#include <pthread.h>
创建一个线程
extern int pthreacreated_create (pthread_t *__restrict __newthread,
const pthread_attr_t *__restrict __attr,
void *(*__start_routine) (void *),
void *__restrict __arg) __THROWNL __nonnull ((1, 3));
参数
pthread_t *__restrict __newthread,
// 创建方式
pthread_t work_thread;
pthread_t wait_thread;
const pthread_attr_t *__restrict __attr,
// 创建属性
pthread_attr_t attr; //线程属性设置
pthread_attr_init(&attr);
//将属性设置为joinable, 使主线程等待该线程执行完后,再结束主线程
pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_JOINABLE);
// 函数参数
void *__restrict __arg) __THROWNL __nonnull ((1, 3));
// 创建传递线程参数的结构体
struct thread_para
{
int sockfd;
char *info;
};
thread_para thread_p;
// 函数指针
void *(*__start_routine) (void *),
// 创建线程函数
void *work_recv_thread(void *param)
{
// 将传入的结构体强转类型
thread_para *t_para = (thread_para* )param;
... ...
}
extern int pthread_create (pthread_t *__restrict __newthread,
const pthread_attr_t *__restrict __attr,
void *(*__start_routine) (void *),
void *__restrict __arg) __THROWNL __nonnull ((1, 3));
创建一个线程
pthread_create(
&work_thread,
NULL,
work_recv_thread,
(void *)&thread_p);
extern int pthread_join (pthread_t __th, void **__thread_return);
pthread_t __th // 线程ID
void **__thread_return // 返回的线程状态信息,类型为void*
//ex:
void *status;
pthread_join(
wait_thread,
&status
);