一、线程的基础知识
进程和程序的区别
进程和线程的区别:
"线程,是执行的基本单位,线程共享进程的资源"。
(1条线程就是1条执行的基本单位,每个线程有自己独立的栈帧)
进程,是资源分配的基本单位,调度的单位。
进程有自己的pid,线程也有自己的id,称为"tid"。
"一个进程里可以有多个线程"。
每个进程都至少有一个线程,这个线程是进程的主线程。
需要"多条执行路线"时,使用多进程的话,进程间切换资源开销比较大,原因是需要复制PCB。"使用线程不需要复制PCB,属于进程内的切换,资源开销小"。
二、线程的创建
"pthread_create"(3)
#include <pthread.h>
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
Compile and link with "-pthread". /** 编译加上该库 -lpthread **/
功能:创建一个新的线程
参数:
"thread" 将 tid 存放在该参数的变量空间里
"attr" 取 NULL 采用默认的属性
"start_routine" (函数访问方式,返回值void *,参数void *)
进程和程序的区别
进程和线程的区别:
"线程,是执行的基本单位,线程共享进程的资源"。
(1条线程就是1条执行的基本单位,每个线程有自己独立的栈帧)
进程,是资源分配的基本单位,调度的单位。
进程有自己的pid,线程也有自己的id,称为"tid"。
"一个进程里可以有多个线程"。
每个进程都至少有一个线程,这个线程是进程的主线程。
需要"多条执行路线"时,使用多进程的话,进程间切换资源开销比较大,原因是需要复制PCB。"使用线程不需要复制PCB,属于进程内的切换,资源开销小"。
二、线程的创建
"pthread_create"(3)
#include <pthread.h>
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
Compile and link with "-pthread". /** 编译加上该库 -lpthread **/
功能:创建一个新的线程
参数:
"thread" 将 tid 存放在该参数的变量空间里
"attr" 取 NULL 采用默认的属性
"start_routine" (函数访问方式,返回值void *,参数void *)