线程:
一.什么是线程(tcb)?
线程是在进程地址空间内运行的,强调资源共享(多个线程共享一份地址空间)。Linux下是用进程模拟线程,并无真正的线程。进程是分配资源的基本单位,线程是调度的基本单位。
二.线程可以共享和独占?
共享的:
1. 文件描述符表
2. 每种信号的处理方式(SIG_IGN、SIG_DFL或者自定义的信号处理函数)
3. 当前工作目录
4. 用户id和组id
独占的:
1. 线程id
2. 上下文,包括各种寄存器的值,程序计数器和指针。
3. 栈空间
4. 信号屏蔽字
5. 调度优先级
三.线程的操作(遵守posix标准)
线程创建:
int pthread_create(pthread_t *thread, constpthread_attr_t *attr,void *(*start_routine) (void *), void *arg);
返回值:成功返回0,失败返回错误码
pthread_t *thread:线程id,只在用户区有效,创建并且附过来。
pthread_attr_t *attr:一般为NULL,设置线程属性。
void *(*start_routine) (void *):函数指针,调用后执行此函数中的代码。
void *arg:为第三个参数的参数。一般为NULL。
线程终止:
void pthread_exit(void *retval);
参数:reval是void*类型的,和线程函数返回值的用法一样,其他线程可以调用pthread_join获得这个指针。pthre