这里,我们需要将缓冲区封装起来,然后让缓冲区与线程想连接,所以我们需要一个相应的接口。在Buffer中,我们需要想对应的一把锁与两个条件变量。当满足队列为空时,消费者等待,反之,生产者等待。Buffer的声明如下: 1 #ifndef BUFFER_H 2 #define BUFFER_H 3 4....
分类:
系统相关 时间:
2014-10-07 19:02:13
阅读次数:
278
程序设计的三种典范(c++对象模型)1.程序模型就像c中那也的str*系列的函数如:char boy[] = "wcfsf";char p = new char[strlen(boy) + 1];strcpy(p, boy);感觉这个就是在函数内部实现的,没有什么封装的概念2.抽象数据类型(ADT)...
分类:
其他好文 时间:
2014-10-07 18:55:53
阅读次数:
174
我们封装好了Buffer后,却不知道具体要多少个线程,一个一个线程的去关联Buffer太繁琐了。那么,我们是不是可以讲Buffer与线程的一个队列封装在一起呢 ?由于vector中不能存放Thread,所以,我们应在vector中添加相应的Thread *,这样,就可以完成封装了。声明代码如下: 1...
分类:
系统相关 时间:
2014-10-07 17:47:43
阅读次数:
274
最近打算记录一下基于FFmpeg的视音频分离,复用,封装格式转换相关的例子。有关封转格式转换的例子在之前的文章:《最简单的基于FFMPEG的封装格式转换器(无编解码)》中已经有过记录,不再重复。因此计划写3篇文章分别记录视频的复用器(Muxer)和分离器(Demuxer)。这是第1篇。本文记录一个基于FFmpeg的视音频分离器简单版(Simplest FFmpeg Demuxer Simple)。视音频分离器(Demuxer)即是将封装格式数据(例...
分类:
其他好文 时间:
2014-10-07 16:36:33
阅读次数:
177
android中资源是只读的,不可写。下面我们来读取Assets目录和res/raw目录下的文本文件到TextView中,首先要做的就是将文件放入到这两个文件夹里在activity_main.xml中放入两个TextView来显示文本内容 然后在mainactivity.java中封装...
分类:
移动开发 时间:
2014-10-07 16:06:43
阅读次数:
151
今天,复习C++基础知识友元这一节的内容,考证C++为什么定义了这一看似矛盾的机制:C++提倡以类为单位编程,注重对类的封装与信息隐蔽,但友元的出现破坏了这一原则,相当于在一堵墙上开了一个小洞.C++为什么要左右手互搏呢?其实,看似矛盾的这一点体现C++的博大精深,分析如下:作为一..
分类:
编程语言 时间:
2014-10-07 06:08:13
阅读次数:
209
本博文讨论Linux中的条件变量Condition的封装;条件变量Condition 主要描述的是 线程间 的同步,即协作关系。Linux中的条件变量通常涉及以下几个函数:int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *...
分类:
系统相关 时间:
2014-10-06 23:40:40
阅读次数:
377
在某些类中,它是不可复制或赋值的,这样我们就要禁用它的值语义,我们可以封装一个禁用值语义的类,这样其它禁用值语义的类可以继承该几类。NonCopyable类的封装代码如下: 1 #ifndef NONCOPYABLE_H 2 #define NONCOPYABLE_H 3 4 class NonC....
分类:
其他好文 时间:
2014-10-06 23:31:40
阅读次数:
136
本篇我们将讨论线程Thread的封装;一、线程类(Thread):注意:1、线程在默认情况下 是 joinable(可结合状态),需要手工调用 join函数(将其回收),也可以将其设置为detachable(分离状态),线程运行完毕后自动消亡;2、Thread类采用static函数作为 pthrea...
分类:
系统相关 时间:
2014-10-06 23:25:50
阅读次数:
288
声明代码如下: 1 #ifndef THREAD_H 2 #define THREAD_H 3 4 #include "NonCopyable.h" 5 #include 6 #include 7 8 class Thread : NonCopyable 9 {10 public:11 ...
分类:
系统相关 时间:
2014-10-06 23:06:30
阅读次数:
225