多线程编程模型

来源:互联网 发布:C语言 函数库 下载 编辑:程序博客网 时间:2024/05/16 19:29

在多线程编程中常见的模型包括:

1.委托(boss-worker)模型

2.对等(peer-to-peer)模型

3.流水线(pipeline)模型

4.生产者-消费者(producer-consumer)模型

切记不要将各种模型相互独立起来,而应该根据工作分解结构(WBS)来决定在不同的阶段或部分应采用哪种模型最合适。

下面就上述4种模型做一个简单的介绍:

1.委托模型

简而言之就是一个boss线程创建其他的worker线程,并给每个创建的worker线程指派任务。boss线程的主要作用是:a:创建所有的线程;b:将工作(task)放置到队列中;c:当工作需要处理时,唤醒worker线程。worker线程的主要作用是:a:检查队列中的请求;b:执行被指派的任务;c:如果没有可供处理的工作,则将自己挂起。

2.对等模型

相对于委托模型,在对等模型中,所有线程处于一个平等的工作状态,即所有线程都是worker线程,但会有一个线程在最初时创建所需要的全部线程,但该线程没有委派工作的功能。

3.流水线模型

用流水线生产线来描述流水线模型是比较恰当的,打个比方就能对该模型有一个初步的了解了。假设现有一篇文档A,需要把其中的标点符号,副词和感叹词全部去掉,可以创建3个线程,姑且记为T1,T2,T3,用T1处理标点符号,T2处理副词,T3处理感叹词。首先用T1处理文档A,将得到的新文档B传给T2,在T2处理完后,将得到的新文档C传给T3处理,直至T3处理完毕,一个流程完成。

4.生产者-消费者模型

在该模型中,producer线程负责产生数据,而consumer线程负责消费数据。该模型在大规模程序和应用中,也被称作客户端-服务器模型。

原创粉丝点击