随笔分类 - C/C++
摘要:Windows下编译ffmpeg有很多种方法,一种是纯MinGW+msys环境,一种是在VC20XX的命令行环境下使用MinGW+msys编译, 还有一种是在cygwin环境下编译,当然还有各种交叉编译以及WinRT、WP8环境下编译,这里不讨论,本文只关注纯MinGW+msysy环境下的编译。 如
阅读全文
摘要:1、yasm 简介 yasm 支持 nasm 语法,同时支持 Windows、Linux、Mac OS 多个操作系统,对指令集(MMX、SSE、AVX等)的支持也还不错, 所以是 x86/amd64 上比较适合用于跨平台、交叉编译的汇编编译器。 yasm 的官网是:http://yasm.torta
阅读全文
摘要:这是第五篇的后续,紧接上一篇的末尾,我们把 Windows 和 Linux 下的休眠策略归纳总结一下。我们可以看到,Linux 下的 sched_yield() 虽然包括了 Windows 下的 Sleep(0) 和 SwitchToThread() 的部分功能(图中蓝色框和虚线框所标注的部分),但缺少了上图中两个灰色文字的功能。
阅读全文
摘要:由于我最近调整了一下 Jimi 的文件结构,导致出现了一个 LNK4042 的 warning,我并没有很重视,这个 warning 导致出现了一些错误。我调试了几个小时,一开始并没有想到是这个 warning 造成的,以为是我改代码改出来的问题(因为最近做了大量调整),特此记录一下。我在调整代...
阅读全文
摘要:这几天研究了一下 disruptor .Net版,由于.Net版跟进不及时,网上只有 v2.10 版。没仔细研究,但可以肯定的是跟最新的Java版 disruptor 3.30 是有不少区别的。我也用这个 2.10 的.Net版本写了跟我们的问题相似的测试程序,得到的结果跟 Java 版的 disruptor 3.30 差不多。我还下载了 C++ 版的,不过看了一下,就扔一旁了,一个原因是版本太低,另一个原因是动不动就 boost,动不动就C++11,我是崇尚轻便、依赖小的,真要用我还不如自己写一个,所以我也懒得用他们来测,我已经在着手把 disruptor 3.3 的原理搬到 C++ 上来。
阅读全文
摘要:上一篇分析了 Sinclair 的 q3.h 的原理,以及根据网友 korall 的提醒,我们可以看到,q3.h 的 push() 前半部分领号的过程是 lock-free 的,这里 lock-free(无锁) 的定义是指假如有一个线程在领号的过程中被无限休眠或崩溃(假设存在崩溃的可能性),也不会造成别的线程在领号的过程中因此而被阻塞。而 push() 的后半部分,即提交成功的确认过程,不是 lock-free 的,而是阻塞的。
阅读全文
摘要:无锁队列 第一篇文章末尾我们提到的《无锁队列的实现》(陈皓(hào)),该文末尾提到的“用数组实现无锁队列”,即用 RingBuffer 实现的无锁队列。
阅读全文
摘要:平行时空 在复制好上面那一行我就先停下来了,算是先占了个位置,虽然我知道大概要怎么写,不过感觉还是很乱。 我突然想到,既然那么纠结,那么混乱,那么不知所措,我们不如换个视角。记得高中时看过的为数不多的长篇小说《穆斯林的葬礼》,作者是:霍达(女),故事描写了两个发生在不同时代、有着不同的内容却又交错扭结的爱情悲剧,一个是“玉”的故事,一个是“月”的故事。结构上采取交叉的模式,一章写“玉”,一章写“月”,分别写两代人的命运,手法新颖,别有一番风味,用电影语言来讲,就是平行蒙太奇。用在这里再好不过了,就这么决定了!
阅读全文
摘要:起因 某一日,从云风的SkyNet群(QQ群)里知道 DouBan(豆瓣) 上有人喷云风,是从 ”《怎样识别水货程序员》说的是真的吗?” 这个《知乎》帖子开始的,当初也是看了个大概,实在对知乎、豆瓣之类的不太感冒,文字又长,瞄了一下完事。其实我一开始没弄清是在豆瓣还是知乎上喷他,今天才看明白经过。知乎上提到的两个(豆瓣)原帖分别是:《怎样识别水货程序员》和 《怎样识别正品程序员》,这两个原帖我好像看过第一个,今天才认真看了看,原来讨论还挺多的……想了解来龙去脉的可以去看看。
阅读全文
摘要:引子 在我之前的一篇文章[ ThoughtWorks代码挑战——FizzBuzzWhizz游戏 通用高速版(C/C++ & C#) ]里曾经提到过编译器在处理除数为常数的除法时,是有优化的,今天整理出来,一来可以了解是怎么实现的,二来如果你哪天要写编译器,这个理论可以用得上。此外,也算我的一个笔记。
阅读全文
摘要:本文摘自:http://adamcavendish.is-programmer.com/posts/38190.htm 引言众所周知,C++11 的新特性中有一个非常重要的特性,那就是 rvalue reference ,右值引用。 引入它的一个非常重要的原因是因为在 C++ 中,常常右值,通俗地讲...
阅读全文
摘要:缘由 最近在写一些字符串函数的优化,兴趣使然,可是写的过程中,想要实现 128bit 的按 bit 逻辑位移,遇到了一个大坑,且听我娓娓道来。 如果要追究标题,更确切的是丢失的SSE2 128 bit / 64 bit 位移指令,已修改。 我并不想用什么马航370来博眼球,我也没意识到这个能博眼球,
阅读全文
摘要:1. 前言 最近在写一些字符串函数的优化,用到x64汇编,我也是第一次接触,故跟大家分享一下。 2. 简介 x86:又名 x32 ,表示 Intel x86 架构,即 Intel 的 32位 80386 汇编指令集。 x64:表示 AMD64 和 Intel 的 EM64T ,而不包括 IA64 。
阅读全文
摘要:(四)一些问题的讨论 前面几章的内容都是服务的一些通用的编写原理,但里面隐含着一些问题,编写简单的服务时看不出来,但遇到复杂的应用就会出现一些问题,所以本章就是用来分析、解决这些问题的,适用于高级应用的开发人员。我这一章的内容都是经过实验得到的,很有实际意义。 我在第一章里面就说过,是由一个服务...
阅读全文
摘要:(三)对服务的深入讨论之下 现在我们还剩下一个函数可以在细节上讨论,那就是服务的CtrlHandler函数。 当调用RegisterServiceCtrlHandler函数时,SCM得到并保存这个回调函数的地址。一个SCP调一个告诉SCM如何去控制服务的Win32函数,现在已经有10个预定义的控...
阅读全文
摘要:(二)对服务的深入讨论之上 上一章其实只是概括性的介绍,下面开始才是真正的细节所在。在进入点函数里面要完成ServiceMain的初始化,准确点说是初始化一个SERVICE_TABLE_ENTRY结构数组,这个结构记录了这个服务程序里面所包含的所有服务的名称和服务的进入点函数,下面是一个SERVI...
阅读全文
摘要:有那么一类应用程序,是能够为各种用户(包括本地用户和远程用户)所用的,拥有用户授权级进行管理的能力,并且不论用户是否物理的与正在运行该应用程序的计算机相连都能正常执行,这就是所谓的服务了。(一)服务的基础知识Question 1. 什么是服务?它的特征是什么? 在NT/2000中,服务是一类受到操...
阅读全文
摘要:最早看到这个题目是从@ 程序媛想事儿(Alexia) 的 最难面试的IT公司之ThoughtWorks代码挑战——FizzBuzzWhizz游戏 开始的,然后这几天陆陆续续有N个小伙伴发表了自己的文章和代码,本来不想做些什么,但是看了这么多代码,总有点想写点什么的欲望。 我说说我对这个题目的看法,当
阅读全文
摘要:1 用FFserver从文件生成流媒体一、安装ffmpeg在ubuntu下,运行sudo apt-get ffmpeg 安装ffmpeg,在其他linux操作系统下,见ffmpeg的编译过程(编译完成后可执行自动安装)。二、准备预播放的媒体文件如test.Mp3,在本文档中,默认放入用户文件夹下得Music文件夹内.(直接从设备采集不在本文档叙述范围之内)三、修改ffserver配置信息ffserver配置文件为: /etc/ffserver.conf 打开,填写配置信息.配置信息包括三方面:1.端口绑定等基本信息,在/etc/ffserver.conf 中有详细注释,在此不再重复,最终配置信
阅读全文
摘要:1ffplay对多媒体的支持能力验证一、视频3gp 177X144 支持播放,在windows下播放正常,但是在linux下面偶有BUG 如果发现画面无法显示而声音可以播放的情况下可以试着切换全屏或者切换分辨率。AVI 208X176 支持 320X240 支持 720X400 支持 720X576 支持DAT 352X288 支持DiVX 720X576 支持MKV 320X240 支持352X288 支持 704X304 支持 720X576 支持MP4 320X240 支持 352X288 支持 720X400 支持MPG 320X240 支持 352X288 支持 480X576 支持
阅读全文
浙公网安备 33010602011771号