当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: 我是做行业软件的所以经常会接触到对数据进行实时采集的问题。
 

 

 ·mmx及sse优化--mmx篇    »显示摘要«
    摘要: mmx和sse都是intel开发的基于simd(单指令多数据流)的技术。所谓单指令多数据流是指可以用一条指令可以完成多个数据的操作。虽然64位系统已经推出,但是我们大部分都是使用32位系统,所以如果要完成两个128位的相加运算,用普通32位指令很明显要执行4条相加指令,而基于64位的mmx指令只需要执行两次即可完成,更强大的sse能一次处理128位,故一次就可以完成操作,所以采用mmx及sse优......
 ·我的thinking in java学习笔记(九)    »显示摘要«
    摘要:第五章 隐藏实现细目 首先考虑oop的一个重要思想--让变动的东西和不变动的事物彼此分开。 java库的程序员在编写库的时候最需要考虑到的就是,一旦他们改变类中的某个函数或者是成员变量,让已经使用前一版本库的程序不会受到变动的影响。库的编写者无法知道程序员调用用了库中那些函数和变量,因而无法修改库的成员,于是为了解决这样的问题,java中出现了访问控制符,其作用就是告诉程序员,那些是可用的,那些是......


使用多线程实现数据实时采集
我是做行业软件的所以经常会接触到对数据进行实时采集的问题.一般的问题是,一个线程读取数据,其他的线程对数据进行处理(如画出实时曲线,将数据存入文件等等).这涉及到两方面问题.1,线程的同步问题—典型的生产者与消费者的问题;2,数据结构问题.即将采集的数据以什么形式存储并由消费者进行读取.

读取的数据要存储到相应的数据结构中,可以有很多种选择,比如存成任务缓冲队列(以链表实现)其中大部分工程使用循环队列用于一写多读,写线程将数据写入队列,读线程从队列中读取.或者实现双缓存方法,即写线程写满一个缓存读线程来取数据同时写线程将数据写入另一个缓存. 【程序编程相关:从“ShowMe”到“快图”

下面我将对这两个问题与大家一起探讨一下.相信大家对生产者消费者问题并不陌生.在读书的时候我们采用系统体提供的p,v解决,这是对同一临界区资源同时进行读写需要的保护措施,本工程使用缓冲队列,故不需要对临界区进行加锁 .马上我会实现双缓存的版本.在此版本中我会实现对临界区的加减锁. 【推荐阅读:通用 文件保存至数据库,从数据库写入磁盘

链表的节点声明如下: 【扩展信息:如何使用一个Enterprise Man

具体的实现如下:

typedef struct node

{

              int  buffer[max_buffer_size];

              long counters;

bool readenable;

              node * pnext;

}node;

其中数组buffer[]用来存放采集数据.counters用来描述有多少个读线程曾对节点进行访问.如果所有读线程都访问过此节点,即可将此节点删除!readenable表示其节点是否可读.

 

链表的声明如下:

typedef struct list


...   下一页
 ·关于xml for analysis provider    »显示摘要«
    摘要:通过http、soap、xml存取analysis services 数据;microsoft xml for analysis provider提供了基于xml通讯的两个方法: discover and executediscover方法获取xml web service的元数据信息,包括一系列可用的数据源; execute方法用于执行mdx查询,以获取数据或架构信息。安装要求:操作系统:mi......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE