异步方式数据结构I/O

原创 2005年03月03日 13:04:00

以前一直都是做同步方式的数据结构存储。即典型的:
void  TMyClass::onSave(TStorage & s)
{
    s << member1;
    s << member2;
      ......
}

void  TMyClass::onLoad(TStorage & s)
{
    s >> member1;
    s >> member2;
      ......
}
假如s满了(Save的时候)或者s数据不足(Load的时候),函数会等待,直到s可用或者出错退出。相当于进程的Stack帮我们保存了I/O状态的上下文。

但是现在要转到异步方式I/O,当s“不可用”的时候,线程应该中断当前的操作,把I/O状态的上下文保存下来,转而做其他的操作。
所以麻烦就来了,要自己做这个上下文的保存。一般来说要记录以下的内容:

1、操作到哪一个成员。
2、假如成员是一个普通的类型、那就要记录操作到类型的哪一个byte。
2、如果成员是一个复合类型,同样,递归地回到了1。

因此,上下文保存的结果一般都是一个自己做的stack,里面就是记录这个递归的过程。

其实想想,何苦为了省那几十k的空间折磨自己呢,例如输出,先用同步的方式把数据记录在内存,然后就记录内存的起始地址和长度,异步处理的时候就把内存输出,如果没有输出完的,就记下未输出部分的起始地址和长度,等待下一次。
不过当结果比较庞大的时候,还是需要自己慢慢苦干,真是悲惨……

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

内核用于I/O的数据结构

这一篇中将介绍UNIX系统中I/O有关的数据结构,并针对数据结构而解释各个I/O操作的实现方法,另外介绍文件共享和原子操作。 (1)每一个进程在进程表中都有一个记录项,每个记录项中有一个打开的文件的...
  • zhccl
  • zhccl
  • 2012-07-13 22:40
  • 1040

Overlapped I/O 和 完成端口等异步IO在内核中的通知方式

By Fanxiushu  2013, 引用和转载请注明原作者 写这篇文章的动机:是因为最近在应用程序中调用DeviceIoControl读写自己做的一个驱动程序的数据,传输的数据包很多。 老的处...

Linux环境编程之文件I/O(四):文件I/O的数据结构

(一) Linux系统支持不同进程间共享打开的文件。

数据结构C语言版(清华)(o)

  • 2010-12-09 18:29
  • 8.85MB
  • 下载

操作系统设备管理-设备I/O内外存数据传送方式

一、操作系统设备管理的概念 操作系统的第四大功能,即对硬件的管理。主要内容有:外部设备的分类、输入输出设备的分配算法、外部设备和CPU之间的数据传送控制方式(程序直接控制方式、中断控制方式、DMA方式...

C语言 文件I/O:实现结构体数据 存储到文件和从文件读取

这是一个初步试验!是为了下一步的创建班级学生管理系统做准备 ClassInfo.h源码 #define MAX_STUDENT 50 //班级最大学生人数 #define MAX_NAME_SPA...

定义一个栈的数据结构,实现min函数,要求push,pop,min时间复杂度是0(1);找出字符串中的最长子串,要求子串不含重复字符,时间复杂度是O(n);

1.将IPV4转换成整数,要求高效。  2.定义一个栈的数据结构,实现min函数,要求push,pop,min时间复杂度是0(1);  3.数组a[n]里存有1到n的所有数,除了一个数remove...

2015腾讯校园招聘研发笔试题:在java中,哪些数据结构可以常量的时间复杂度O(1)添加元素?

原题贴出自: 原题描述

【数据结构】栈面试题---以O(1)时间复杂度求最小值

假设给出一组数字,我们需要在O(1)时间复杂度内完成对这组数字最小值的求解。 题目具体描述:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小值元素的min函数。在该栈中,调用min, push和...

数据结构之排序算法之O(nlogn)

上一次写了冒泡,选择,和插入排序。 这一次写一下堆排序、归并、快速排序。 堆排序 堆排序,主要是利用完全二叉树在数组中的存储方式(层序遍历),i 位置的节点的儿子是 2i 和 2i+1 。 最...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)