1. 线程
线程是一个轻量化的进程,关于进程与线程的详细概念参见:
进程与线程
线程相比与进程而言,其控制和调度更加灵活,由于同一进程的多个线程共享同一地址空间,因此Text Segment、Data Segment都是共享的,如果定义一个函数,在各线程中都可以调用,如果定义一个全局变量,在各线程中都可以访问到,除此之外,各线程还共享以下进程资源和环境:
-
文件描述符表
-
每种信号的处理方式(
SIG_IGN
、SIG_DFL
或者自定义的信号处理函数) -
当前工作目录
-
用户id和组id
但有些资源是每个线程各有一份的:
-
线程id
-
上下文,包括各种寄存器的值、程序计数器和栈指针
-
栈空间
-
errno
变量 -
信号屏蔽字
-
调度优先级
2. 创建线程
在Linux中创建线程需要用到pthread_create函数:
#include <pthread.h>
int pthread_create(pthread_t *restrict ptid,
const pthread_attr_t *restrict attr,
void *(*start_routine)(void*), void *res