LINUX信号量线程控制例子 除了上次讲的互斥锁,使用信号量也就是操作系统中所提到的PV原语,也能达到互斥和同步的效果,这就是下面要说的。 PV原语是对整数计数器信号量sem的操作,一次P操作可使sem减一,而一次V操作可是sem加一。进程(或线程)根据信号量的值来判断是否对公共资源具有访问权限。当信号量的值大于零或等于零的时候,该进程(或线程)具有对公共资源访问的权限,否则,当信号量的值小于时,该进程(或线程)就会被阻塞,直到信号量的值大于或等于一。 在LINUX中,
Linux信号量 sem_t简介 信号量的数据类型为结构sem_t,它本质上是一个长整型的数。函数sem_init()用来初始化一个信号量。它的原型为: extern int sem_init __P ((sem_t *__sem, int __pshared, unsigned int __value)); sem为指向信号量结构的一个指针;pshared不为0时此信号量在进程间共享,否则只能为当前进程的所有线程共享;value给出了信号量的初始值。 函数sem_post
makefile概述 概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能
sprintf函数详细解释 sprintf() 格式化输出函数(图形)功能: 函数sprintf()用来作格式化的输出。用法: 此函数调用方式为int sprintf(char *string,char *format,arg_list);说明: 函数sprintf()的用法和printf()函数一样,只是sprintf()函数给出第一个参数string(一般为字符数组),然后再调用outtextxy()函数将串里的字符显示在屏幕上。arg_list为参数表,可有不定个数。通
WaitForMultipleObjects介绍 WaitForMultipleObjects是Windows中的一个功能非常强大的函数,几乎可以等待Windows中的所有的内核对象(关于该函数的描述和例子见MSDN,)。但同时该函数在用法上却需要一定的技巧。 原型:DWORD WaitForMultipleObjects( DWORD nCount, const HANDLE* lpHandles, BOOL bWaitAll, DWORD dwMillise
WINSOCK SELECT模型 Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。 可是使用Select就可以完成非阻塞(所谓非阻塞方式non-block,就是进程或线程执行此函数时不必非要等待事件的
pragma comment的使用 该宏放置一个注释到对象文件或者可执行文件。#pragma comment(comment-type [,"commentstring"] )comment-type是一个预定义的标识符,指定注释的类型,应该是compiler,exestr,lib,linker之一。commentstring是一个提供为comment-type提供附加信息的字符串,Remarks:1、compiler:放置编译器的版本或者名字到一个对象文件,该选项是被l
SDP协议 SDP:Session Description ProtocolSDP格式: Session description v= (protocol version) o= (owner/creator and session identifier) s= (session name) i=* (session information) u=* (URI of description) e=* (ema
linux下C语言多线程 linux下C语言多线程编程实例 下面先来一个实例。我们通过创建两个线程来实现对一个数的递加。或许这个实例没有实际运用的价值,但是稍微改动一下,我们就可以用到其他地方去拉。下面是我们的代码:/*thread_example.c : c multiple thread programming in linux*author : falcon*E-mail : tunzhj03@st.lzu.edu.cn*/
rtsp 因为项目需要,学习了一下RTSP协议,为了防止以后忘记,就把学习过程和成果记载下来。期间参考了一些网上的资料,并分析了VLC的RTSP报文。 RTSP(Real Time Streaming Protocol,实时流协议),是由Real Network和Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议。RTSP提供一种可扩展的框架,能够提供可控制的,按需传输的实时数据,比如音频和视频文件。源数据可以包括现场数据的反馈和存储的文件。RTSP对流媒体提供了
GOP介绍 GOP(Group of Pictures)策略影响编码质量:所谓GOP,意思是画面组,一个GOP就是一组连续的画面。MPEG编码将画面(即帧)分为I、P、B三种,I是内部编码帧,P是前向预测帧,B是双向内插帧。简单地讲,I帧是一个完整的画面,而P帧和B帧记录的是相对于I帧的变化。没有I帧,P帧和B帧就无法解码,这就是MPEG格式难以精确剪辑的原因,也是我们之所以要微调头和尾的原因。 MPEG-2 帧结构 MPEG-2压缩的帧结构有两个参数,一个是GOP(Group Of Picture)图
Linux下Socket编程 什么是Socket Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的 Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打
Fenice vm流程研究 初始化均在include/fenice/目录下初始化TRACE-POINT (INCLUDE在UTIL.H文件,提示程序开始)初始化TSOCKET (功能稍后补充,转至socket.h,typedef int tsocket;)初始化struct timespec { __time_t tv_sec; /* Seconds. */ long int tv_nsec; /* Nanoseconds. */ };包含于(include/f
H264 RTP打包方式 NALU Header (1 byte)|0bit |1-2bit |3-7bit|F(1bit) |NRI(2bits) |Type(5bits) |F: forbidden_zero_bit.在 H.264 规范中规定了这一位必须为 0.NRI: nal_ref_idc.取 00 ~ 11, 指示这个 NALU 的重要性, 值越大表示这个NALU越重要,如 00 取值表示NALU 解码器可以丢弃它而不影响图像的回放,11
斜率,截距,回归方程 斜率:亦称“角系数”,表示一条直线相对于横坐标轴的倾斜程度。一条直线与某平面直角坐标系横坐标轴正半轴方向的夹角的正切值即该直线相对于该坐标系的斜率。如果直线与x轴互相垂直,直角的正切直无穷大,故此直线,不存在斜率。对于一次函数y=kx+b,k即该函数图像的斜率。对于任意函数上任意一点,其斜率等于其切线与x轴正方向的夹角,即tanα. 斜率计算:ax+by+c=0中,k=-a/b.截距:在数学上,指函数与坐标轴所有交点的(横或
Subsonic介绍及使用 官方网站:http://subsonicproject.com/介绍原文:http://www.keyusoft.cn/(S(3wcpdjv14wpvdr55i3bidx55))/Default.aspx?Page=SubSonic&AspxAutoDetectCookieSupport=1使用原文:http://www.cnblogs.com/EricGu/archive/2008/07/23/1131467.html SubSonic是一个类似
网络编程基础 这里的IP网络是指基于因特网协议套件(TCP/IP协议栈)的网络,包括:因特网(Internet)、城域网(Metropolitan Area Network,MAN)和内部网(Intranet)等。为了便于分析和管理,一般将通信网络抽象为若干层。主要有ISO(和IEC共同)制定的7层参考模型(Reference Model)ISO/OSI(国际标准,失败,主要用于理论研究)和因特网5层参考模型TCP/IP协议栈(实事标准,成功,应用十分广泛)。参见表13-1和图15-2&3。表13-1 ISO/OSI
COM COM(含DCOM和COM+)组件技术存在许多问题,其中有一些是关键的,有的甚至是致命的。组件技术主要强调在独立开发和部署的程序之间的一套约定(contract),COM则是微软公司将这些约定规范化的首次尝试。COM既能作为设计范例(paradigm)(它将组件的约定,表示为类型定义),也可用作支持平台技术。作为前者,COM编程模型相当成功;但是后者却存在诸多问题,正是由于缺乏稳固的平台技术,COM时代面临着终结。组件间的约定,纯粹是通过用户与组件之间的语义保证和假设的形式来表示的。但是,仍需要定义某种形式
组件编程 面向过程的编程重用函数、面向对象的编程重用类、范型编程重用的是算法的源代码,而组件编程则重用特定功能完整的程序模块。每个组件会提供一些标准且简单的应用接口,允许使用者设置和调整参数和属性。用户可以将不同来源的多个组件有机地结合在一起,快速构成一个符合实际需要(而且价格相对低廉)的复杂(大型)应用程序。组件区别于一般软件的主要特点,是其重用性(公用/通用)、可定制性(设置参数和属性)、自包容性(模块相对独立,功能相对完整)和互操作性(多个组件可协同工作)。可以简单方便地利用可视化工具来实现组件的集成,也是组件
DLL的MFC编程 DLL(Dynamic Link Library,动态链接库)是微软公司为Windows和OS/2操作系统设计一种供应用程序在运行时调用的共享函数库。DLL是应用程序的一种扩展,也是软件共享和重用的传统方法。DLL除了可同时被多个应用程序共享外,还可以在不改变调用接口(从而不需修改使用它的应用程序)的情况下,改进和升级里面的库函数。而且DLL与编写它的语言无关,例如,用VC生成的规则DLL,可以被VB、Delphi等生成的应用程序使用。DLL可以用多种语言和工具编写,我们