线程
学习了进程后,了解到进程是是资源分配的最小单位,而线程是调度的最小单位,线程相比于进程的不同如下:
- 1.进程拥有独立的地址空间、代码段、数据段、堆栈段,而线程只有独立的堆栈段;
- 2.进程间拥有多种通信方式,而线程间通信通常是通过全局变量或者是在创建线程是进行数据传输;
- 3.运行于同一个进程中的各个线程都是共享大部分数据的;
- 4.创建线程花费的空间远小于创建进程花费的空间;
- 5.线程之间切换时间远小于进程切换时间;
- 6.由于线程间共享数据,所以线程间通信更加便捷;
- 7.fork创建的进程时copy程序,而线程的创建是调用函数
创建线程
创建线程主要使用函数pthread_create()
,该函数包括在库pthread.h
中,所以编程时要调用,而且在编译阶段,最后要加上链接:-lpthread
,因为gcc默认使用C库,所以要把pthread.h
链接上去。
函数原型为:
int pthread_create( pthread_t *restict thread,
const pthread_attr_t *restric attr,
void *( *start_routine )( void* ),
void *restrict arg );
看起来比较晦涩,在程序中经常这样使用: