首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

[基础]多线程有关概念

2013-01-01 
[基础]多线程相关概念同时性:指两个或两个以上事件在同一时刻发生。并发性:指两个或两个以上事件在同一时间

[基础]多线程相关概念

同时性:指两个或两个以上事件在同一时刻发生。

并发性:指两个或两个以上事件在同一时间间隔发生。

进程是操作系统资源分配的单位。

线程是操作系统执行的单位。同一进程中的两段代码不能同时执行,除非引入线程。

为什么要引入线程?

进程与进程之间的通信时十分慢的(网络编程)。因为进程管理分配很多资源,所以转换起来很慢,就这样线程产生了,它是比进程更小的单位。一个进程中只要有一个或多个线程,每个线程之间的通信相对进程而言,则快了很多,因为线程只涉及到CPU的资源分配。一个进程里的线程是可以相互通信的,但不同的进程之间的线程是不能相互通信的。

线程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大的提高了程序的执行效率。

线程的优点

线程在程序中的作用:提供程序的并发性。常用在网络通信,处理前后台,处理异步的情况下。

只有在多个CPU的计算机上,多个线程才能够真正的同时运行。然而,操作系统把CPU的时间分成很短的时间片分配给每个线程,这样给人的感觉好像是多个线程真的同时在运行

线程同步

多线程编程的核心就是线程同步。线程同步是指线程之间在相互通信时避免破坏各自数据的能力。也就是对于共享资源,一个线程在某一段时间内是多了占有的。它是由操作系统分配CPU时间片的分配方式引起的。虽然在某一时刻,只有一个线程占有CPU(单CPU)时间,但是没有办法知道在什么时候,在什么地方线程被打断,这样如何保证线程之间不破坏彼此之间的数据就显的格外重要了。

线程间的同步方法大体分两类:用户模式(临界区(CriticalSection))和内核模式(事件(Event),信号量(Semaphore),互斥量(Mutex))。

线程互斥:是在对于共享的进程系统资源,在各单个线程访问时的排他性。是一种特殊的线程同步。

小demo

#include <windows.h>#include <iostream>using namespace std;int iData=0;DWORD WINAPI ThreadFun(LPVOID lParam){    int num=(int)lParam;    for (int i=0;i<num;i++)    {        iData=iData++;        cout<<iData<<endl;    }    return 0;}int main(){    for (int i=5;i<7;i++)    {        CreateThread(NULL,0,ThreadFun,(LPVOID)i,0,NULL);      }    system("pause");    return 0;}

结果

[基础]多线程有关概念

热点排行