C++流水线的简易实现

流水线本来是工程任务中为了将不同的工序分开的一种处理流程。这种分工,会给工作的流程化和吞吐带来一定的好处。
如果将流水线应用到程序中,会有如下一些好处:
1、不需要锁。线程之间有时序关系,因此从流程设计上就规避了锁的机制;
2、多线程并发。不同线程负责不同的事务处理,可以在一定程度上实现并发;
3、吞吐量高。由于多线程不会像单线程那样阻塞,所以吞吐量会有一定提高。
但流水线也有它的缺点:
1、处理有时序。这就要求对整个处理流程能够正确划分,不要出现处理不均衡的情况;
2、由于无锁的设计,对开发要求比较高。如果用法不当,容易出现多线程的死锁。

总体来说,流水线不管是对性能还是开发人员来说,都是很好的一种方法,能够让程序像人一样思考,分段处理。
下面,实现一个超级简易的样例,共同学习。

#ifndef PIPE_MY_PIPELINE
#define PIPE_MY_PIPELINE

#include <iostream>
#include <vector>
#include <map>
#include "my_message.h"

/**
消息驱动 
**/ 
class IPipeBase
{
	public:
	virtual void process(MyMessage* msg) = 0;
};

class PipeBase : public IPipeBase
{
public:
virtual void forward(MyMessage* msg) 
{
	for (int i = 0; i < next_pipes_.size(); ++i)
	{
		// 将msg丢给所有的下一级流水线处理
		next_pipes_[i]->proces
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值