找回密码
 加入
搜索
查看: 4315|回复: 7

[系统综合] 求内存操作的函数

  [复制链接]
发表于 2011-11-12 04:19:18 | 显示全部楼层 |阅读模式
比如我要写入字符串“item=4|1723|0|0|0|0|0”到内存
然后再读取出来
最后再删除(是不是就是释放的意思呢 呵呵)

因为之前用了一个循环读取文本文件 取值来判断 结果IO不断增加
后来改用先检测文件是否存在 再取值 处理一些数据之后 再删除这个文件
但是有人说“检测文件是否存在要硬盘配合 随进程的增多 排队的访问就越大 虽然不读取数据 但还是要读文件分配表”
如果利用内存来操作就爽了 不过俺不会搞这些 高手帮个忙呗
循环读取内存的值应该没什么负载的吧
发表于 2011-11-12 04:58:35 | 显示全部楼层
回复 1# vdvod


    实在不明白你的意思:“利用内存来操作”
怎么个用内存来操作?
你定义个变量,难道它不在内存里?
难道这样?

#Include <Memory.au3>

$Item = "4|1723|0|0|0|0|0"
$bItem = Binary($Item)
$iLength = BinaryLen($bItem)
$hBuffer = _MemGlobalAlloc($iLength, $GMEM_MOVEABLE)
$pBuffer = _MemGlobalLock ($hBuffer)
$tMem =  DllStructCreate( "byte[" & $iLength & "]", $pBuffer)
DllStructSetData($tMem, 1, $bItem)
_MemGlobalUnlock($hBuffer)

$iStr = DllStructGetData($tMem, 1)
MsgBox(0,0,BinaryToString($iStr))

 楼主| 发表于 2011-11-12 05:06:43 | 显示全部楼层
本帖最后由 vdvod 于 2011-11-12 05:15 编辑

回复 2# happytc
是由两个程序进程处理一个文件的 这个文件相当于“接口” 使两个程序间互相通信
意思就是说 主程序不带任何会让脚本延时的循环 把这些循环操作的任务交给另外一个进程来处理 处理的结果要返回给主程序 写入一个文本文件 主程序循环读取这个文件取值判断 再进行下一步操作或再给另外一个任务给这个“子程序”
但是文件的话 那肯定要操作硬盘 我对内存操作不是很懂 Memory.au3里面的注释全部是鸟语看不懂


刚才试过用环境变量 但是循环读取环境变量 CPU马上50%
发表于 2011-11-12 07:22:17 | 显示全部楼层
回复 3# vdvod
循环里面要加sleep(100),不然占用CPU资源太多。
发表于 2011-11-12 07:23:09 | 显示全部楼层
再说能做一个程序的,为什么要做两个程序,麻烦!
发表于 2011-11-12 09:43:00 | 显示全部楼层
回复  happytc
是由两个程序进程处理一个文件的 这个文件相当于“接口” 使两个程序间互相通信
意思就是 ...
vdvod 发表于 2011-11-12 05:06



    呵,看明白了,其实就是多线程干的活:多个线程共享数据空间。哎,不过,au3的硬伤:au3不支持多线程。然后你就想进程间通信,它有很多方式的,如:

①用au3已有的UDF创建多进程,如CoProc.au3,人家已经给你写好了如何进程通信
②简单的信息,你可以用_SendMessage()函数来实现

③看样子,你最想的是使用共享内存方式:用_WinAPI_CreateFileMapping()产生一个file-mapping核心对象;然后用所有进程都用_WinAPI_OpenFileMapping()初始化共享内存;再调用_WinAPI_MapViewOfFile()取得共享内存的指针
 楼主| 发表于 2011-11-12 17:27:04 | 显示全部楼层
本帖最后由 vdvod 于 2011-11-12 17:28 编辑

回复 6# happytc


    呵呵 我刚接触AU3 不是很懂 以前做过PHP 而且不懂内存这些东西 你说的那个CoProc.au3我早已折腾过 传递一次信息还可以 但是如果循环传递 中间会有部分传递不到 不知道是什么回事 谢谢你 我得研究下这个_WinAPI_CreateFileMapping 虽然不懂 好像教程里面没这个函数说明
其实我就是想知道单独读取内存值怎么搞 还有写入和修改内存的值 这两个代码要分开 麻烦再给下例子 你之前的代码我看不到 对电脑不是很懂 呵呵 最好加注释 呵呵
发表于 2011-11-12 17:35:10 | 显示全部楼层
回复 6# happytc
下次有时间研究下_WinAPI_CreateFileMapping()函数,看来au3的多线程就靠这个了,感谢!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-20 23:35 , Processed in 0.079065 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表