C++多线程编程设计模式

原来多线程编程还有设计模式?~ 看来程序员的世界发展到现在,已经太过成熟了...各种设计模式和框架玩到飞起...

本博转载于https://www.cnblogs.com/agilestyle/p/11494963.html


Single Threaded Execution —— 能通过这座桥的只有一个人

所谓“Single Threaded Execution”,即“以一个线程执行”,该模式用于设置限制,以确保同一时间内只让一个线程执行处理。

 

Immutable —— 想破坏也破坏不了

Immutable模式中存在着确保实例状态不发生改变的类(immutable类)。在访问这些实例时并不需要执行耗时的互斥处理,因此若能巧妙利用该模式,定能提高程序性能。

 

Guarded Suspension —— 等我准备好

如果执行现在的处理会造成问题,就让执行处理的线程等待,通过让线程等待来保证实例的安全性。

 

Balking —— 不需要就算了

如果现在不合适执行这个操作,或者没必要执行这个操作,就停止处理,直接返回。

 

Producer-Consumer —— 我来做,你来用

Producer:生成数据的线程

Consumer:使用数据的线程

Producer-Consumer模式在生产者和消费者之间加入了一个“桥梁角色”,该桥梁用于消除线程间处理速度的差异。

 

Read-Write Lock —— 大家一起读没问题,但读的时候不要写

当线程读取实例的状态时,实例的状态不会变化。实例的状态仅在线程执行写入操作时才会发生变化。

 

Thread-Per-Message —— 这项工作就交给你了

为每个命令或请求新分配一个线程,由这个线程来执行处理。

 

Worker Thread —— 工作没来就一直等,工作来来就干活

在Worker Thread模式中,工人线程(work thread)会逐个取回工作并进行处理。当所有工作全部完成后,工人线程会等待新的工作到来。

 

Future —— 先给你提货单

Future的意思是未来、期货。假设有一个方法需要花费很长时间才能获取运行结果,那么,与其一直等待结果,不如先拿一张“提货单”。这里的“提货单”就称为Future角色,是“未来”可以转化为实物的凭证。

 

Two-Phase Termination —— 先收拾房间再睡觉

开始 -> 操作中 -> 终止处理中 -> 终止

先从“操作中”状态变为“终止处理中”的状态,然后再真正地终止线程。

 

Thread-Specific Storage —— 一个线程一个储物柜

即使只有一个入口,也会在内部为每个线程分配特有的存储空间的模式。

 

Active Object —— 接收异步消息的主动对象

在Active Object模式中出场的主动对象可不仅仅“有自己特有的线程”。它同时还具有可以从外部接收和处理异步消息并根据需要返回处理结果的特征。

Active Object模式中的主动对象会通过自己特有的线程在合适的时机处理从外部接收到的异步消息。

Active Object模式综合来Producer-Consumer模式、Thread-Per Message模式、Future模式等各种模式,有时也被称为Actor模式。


当然我会在设计模式/C++&STL/操作系统编程/专栏中对这些设计模式的一部分进行详细的学习...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值