jinlong的个人主页

http://www.qtcn.org/bbs/u/127542  [收藏] [复制]

jinlong

  • 1

    关注

  • 0

    粉丝

  • 5

    访客

  • 等级:新手上路
  • 总积分:1
  • 保密,2011-02-15

最后登录:2018-03-04

更多资料

日志

2017-07-24 22:02

前节写的Repository类只能存储一种类型,这一节考虑写成模版类,同时修改TakeData()接口,可以设置超时时间。
具体代码如下:

复制代码#ifndef REPOSITORY_H
#define REPOSITORY_H

#include <mutex>
#include <condition_variable>
#include <atomic>
#include <QQueue>
#include <QDebug>

template<typename T>
class Repository
{

public:
Repository()
{
m_queue_max_length = 100;
m_bStop = false;
}

void AddData(const T &data)
{
std::unique_lock<std::mutex> lock( ..

阅读全文»分类:默认分类|回复:0|浏览:631
2017-07-11 23:39

前言
        上一节实现了一个单生产者单消费者模式功能,现在再如何实现一个多生产者多消费者的模式。
设计思路
        多生产者多消费者跟单个消费者生产者比较起来,只是多个几个线程去生产数据,去获取数据,
那我只需要保证多个线程“存入数据”是线程安全的,多个线程“读取数据”是线程安全的就可以了。
下面就需要去写测试代码验证下师傅满足这些要求。
代码分析
        首先查看下获取数据函数是 ..

阅读全文»分类:默认分类|回复:0|浏览:749
2017-07-10 22:46

前言
最近做公司项目遇到一个问题,加载20万的日志文件,解析后写入数据库中。做完后发现读文件、解析、写入数据依次搞下来,速度实在是太慢。
所以学习用多线程的来完成这个工作,考虑用生产者消费者模式来完成。
设计思路:
写一个数据存储类,提供“存入数据”、“取走数据”两个接口,两个接口保证一次只能有一个线程去操作数据。数据满时阻塞“存入数据”接口,等待数据被取走,同理数据空时,阻塞“取走数据”接口,等待存入数据。
具体实现:
存储数据使用QQueue<T>类,线程同步使用C++11 标准库 std::mutex、std::con ..

阅读全文»分类:C++|回复:0|浏览:448

Powered by phpwind v8.7 Certificate Copyright Time now is:03-28 18:31
©2005-2016 QTCN开发网 版权所有 Gzip disabled