进程与线程

0)对进程与线程的解释 绝妙的比喻    (多线程C++例程参考Project_Qt_C++)

1)进程:一个正在运行的程序实例。系统会给每一个进程分配独立的内存空间,这个内存空间里有应用程序的代码和数据。进程是资源分配和调度运行的单位。除了地址空间,进程还占有某些资源,如文件、动态内存分配和线程。

2)线程:线程是进程中执行运行的最小单位,每个进程包含一个或多个执行线程。

1)多线程可以提高程序的响应速度:任何一个包含很多互不相关操作的程序都可以被重新设计,使得每一个操作都成为一个线程,以提高程序性能。

2)进程任务大,信息多,将其分成多个线程后,各线程可共享进程分配的资源,调度方便。

3)多线程编程虽然可以带来良好的响应性能,但代价是用户必须小心设计,且运行不可预测,测试困难。这是因为程序的并发执行有时会带来与时间有关的错误(所以要引入同步机制),比如一个线程正在更新一个结构,同时另一个线程试图读取同一个结构,则无法判断所读取的数据是新的还是旧的。另外有时要求线程的动作以指定的次序发生,如一个线程需等待另一个线程所引起的事件。

4)为防止对共享资源的访问冲突,引入了同步机制。用于同步的对象有互斥体对象(Mutex)、信号量对象(Semaphore)、事件对象(Event)、排斥区对象(Critical_Section).

  • Critical_Section(临界区)的定义举例(Critical_Section

5)可重入函数与线程安全(重点参考2楼和3楼)

可重入函数是线程安全函数的真子集。所谓可重入函数,简单的说就是可被随时中断的函数。无论何时中断该函数,转而去执行其他的代码,返回到该函数后,该函数的结果不会发生任何改变。这就要求可重入函数不含有全局变量和静态变量,也不会调用不可重入函数。

posted @ 2016-07-02 11:39  Disen  阅读(121)  评论(0编辑  收藏  举报