基本概念

进程是具有一定独立功能的程序,关于某个数据集合上的一次运行活动。

进程是系统进行资源分配和调度的一个独立单位。

线程是进程的一个实体,是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

Published

17 January 2015

Tags