
C++
心灵*寄语&
这个作者很懒,什么都没留下…
展开
-
编译型语言与解释性语言的区别
解释性语言和编译性语言的区别 计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。编译性语言编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直原创 2017-05-03 10:28:24 · 447 阅读 · 0 评论 -
Windows的消息队列和消息循环
一 Windows中有一个系统消息队列,对于每一个正在执行的Windows应用程序,系统为其建立一个“消息队列”,即应用程序队列,用来存放该程序可能创建的各种窗口的消息。应用程序中含有一段称作“消息循环”的代码,用来从消息队列中检索这些消息并把它们分发到相应的窗口函数中。二 Windows为当前执行的每个Windows程序维护一个「消息队列」。在发生输入事件之后,Windows将事件转换为一个「...原创 2018-11-18 21:27:09 · 765 阅读 · 0 评论 -
消息队列的原理
简介消息驱动机制是 GUI 系统的基础,消息驱动的底层基础设施之一是消息队列,它是整个 GUI 系统运转中枢,本文介绍了一个基于环形队列的消息队列实现方法,给出了它的数据结构、主要操作流程和核心代码。环形队列环行队列是一种首尾相连的队列数据结构,遵循先进先出原则,如下图所示:ring buffer 示意图在环形队列中用一组连续地址的存储单元依次存放从队列头到队列尾的元素,通过两个指针 r...原创 2018-11-18 21:25:05 · 1444 阅读 · 0 评论 -
Sdk迭代开发设计总结
Sdk开发设计与Apk开发不同的地方还是有些明显的不同之处,明显的区别是使用对象不一样,Sdk是基于开发者使用的,都是有一定的开发水平,相对于Apk用户而言基本是大众用户,做得好不好不仅仅是运行起来性能、稳定行以及功能,还需要顾忌开发者调用是否方便、嵌入成本、更新维护成本,因为Sdk是作为一个库给对方使用,但又不是开源的,还得注意保护知识产权,个人认为一个不错优秀的sdk开发需要注意如下方面:...转载 2018-07-25 20:24:54 · 277 阅读 · 0 评论 -
linux之多线程(互斥锁)
/*线程一*/static void* thread_1(void*){ int i=0; for(i=0;i<=6;i++) { LOGI("This is a pthread_1"); if(i==2) pthread_exit(0); //sleep(1); }}/*线...原创 2018-05-08 17:31:42 · 769 阅读 · 0 评论 -
win32多线程编程
DWORD WINAPI Thread_InputData(LPVOID lpParameter) {}DWORD WINAPI Thread_GetH264(LPVOID lpParameter) {}int main(){ HANDLE thread_inoutdata = CreateThread(NULL, 0, Thread_InputData, NULL, 0, NULL);...原创 2018-02-28 15:03:10 · 157 阅读 · 0 评论 -
win32多线程中智能锁设计
Auto_Mtx.h#pragma once#ifndef _AUTO_MTX_#define _AUTO_MTX_template<class T>class Auto_Mtx{public: Auto_Mtx(T p) :mtx(p) { WaitForSingleObject(mtx, INFINITE); }; ~Auto_Mtx() { Relea...原创 2018-02-28 14:30:35 · 382 阅读 · 0 评论 -
DLL的两种引用方式(动态引用和静态引用)
点击打开链接转载 2018-02-28 10:47:44 · 1886 阅读 · 0 评论 -
对象引用与对象的区别
初学Java时,在很长一段时间里,总觉得基本概念很模糊。后来才知道,在许多Java书中,把对象和对象的引用混为一谈。可是,如果我分不清对象与对象引用,那实在没法很好地理解下面的面向对象技术。把自己的一点认识写下来,或许能让初学Java的朋友们少走一点弯路。 为便于说明,我们先定义一个简单的类: class Vehicle {int passengers;转载 2016-07-19 15:05:47 · 189 阅读 · 0 评论 -
C++11随笔(一)多线程
C++11支持与平台无关的多线程库,#include 即可使用;使用mutex完成线程间数据的共享操作,mutex.lock()方法为阻塞式加锁,在未获得锁之前,线程会阻塞;mutex.try_lock()为非阻塞式加锁,即使未获得锁,也会即刻返回,不会阻塞线程;使用thread.join()方法,在子线程未结束之前,调用子线程的线程会被阻塞;测试代码如下:#include "iostream原创 2018-02-07 16:23:15 · 266 阅读 · 0 评论 -
C++文件读取随笔
对于读取大容量视频文件时,推荐使用fopen()方式,ifstream和ofstrem在读取和写大容量文件时,会遇到文件读取和写入错误的问题。原创 2018-02-10 13:44:42 · 163 阅读 · 0 评论 -
实时流缓冲buffer设计
为什么要设计缓冲区?对于大容量文件或者在线视频,一次性读入内存,会占用大量系统资源,显然不切实际。为了解决类似问题,缓冲区允许边读边写,很好的解决了大容量文件读取的难题。缓冲区设计需要考虑的问题?缓冲区大小设计缓冲区写入和读取怎么进行控制,写入速度大于读取速度,会造成缓冲区溢出;写入速度小于读取速度,会造成数据读取失败的问题缓冲区如何设计?引入writeIndex、readIndex.读写标记,用...原创 2018-02-12 14:29:48 · 751 阅读 · 0 评论 -
win32多线程之互斥同步
mutex、critical、semaphore和event比较?mutex属于内核对象,保证多线程共享数据的安全,保证同一时间内只能有一个线程对资源的访问,可用于跨进程critical属于用户态对象,保证多线程共享数据的安全,相比较于mutex相率更高,但只能用于同一进程下不同线程之间semaphore属于用户态对象,允许多个线程同时访问共享资源。event属于内核对象,用于保证多线程间的同步,...原创 2018-02-12 14:12:20 · 193 阅读 · 0 评论 -
win32多线程和C++11多线程对比
C++11的mutex和thread虽然使用更加方便快捷,具有跨平台的有点,但是效率相比较于win32的多线程,效率有了明显的降低,故优先考win32多线程。原创 2018-02-12 14:03:43 · 1222 阅读 · 0 评论 -
多线程编程很难掌控
在 Unix编程艺术 中,提到了尽量避免多线程编程模型, 认为这样只会增加复杂度, 提倡使用多进程, 这样本质上就可以避免多线程『共享内存数据』产生的 “corruotped memory” 问题。其中, 提到了一篇文章 Why Threads Are A Bad Idea, 对于多线程编程和事件编程分析的非常好, 具体的翻译如下:1 介绍线程的背景:在操作系统中出现多线程逐渐演变成 用户层面的编...转载 2018-02-10 17:03:41 · 1937 阅读 · 0 评论 -
Windows的消息机制要点
窗口过程 每个窗口会有一个称为窗口过程的回调函数(WndProc),它带有四个参数,分别为:窗口句柄(Window Handle),消息ID(Message ID),和两个消息参数(wParam, lParam), 当窗口收到消息时系统就会调用此窗口过程来处理消息。(所以叫回调函数)2 消息类型系统定义消息(System-Defined Messag...原创 2018-11-18 21:29:10 · 257 阅读 · 0 评论