线程与进程的初步知识 Life is but a span.
基本概念
进程是具有一定独立功能的程序,关于某个数据集合上的一次运行活动。
进程是系统进行资源分配和调度的一个独立单位。
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。
线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。
一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行。
区别
- 地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;
- 资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源。
- 线程是处理器调度的基本单位,但进程不是。
- 二者均可并发执行。
代码
static int count = 0; // count 是一个静态全局变量
/*保护count操作的互斥体PTHREAD_MUTEX_INITIALIZER是对互斥体变量进行初始化的特殊值*/
pthread_mutex_t count_mutex = PTHREAD_MUTEX_INITIALIZER;
void * A(void * data){
while (1) {
/* 锁定保护count操作的互斥体。*/
pthread_mutex_lock (&count_mutex);
count += 1;
printf("%d\n",count);
/* 已经完成了对count操作的处理,因此解除对互斥体的锁定。*/
pthread_mutex_nlock (&count_mutex);
}
}
blog comments powered by Disqus