这几天抓狂到掉渣,一照镜子眼球红完,真让人不寒而栗。
也不知道连续多少天睡眠严重不足了,今天总突破这层阻隔。
没有女人的男人有时候思维会陷入某种旋窝,发散不开。
如何同步对共享内存操作让我心力交瘁,最后楼下的小情侣3点多的时候又兴风作浪,女的一声惊雷让我灵光乍现:
我管好我的表演就足够了,何须管对方呢?
于是把纠结同一段内存的问题分成两段,一段A to B,一段 B to A,真是茅塞顿开!
如果分成4段:A对B读取,A对B写入,B对A读取,B对A写入,连同步都免了。
阿叔16G的内存,DLL全局段或者一部分做虚拟内存就更爽了,用空间换取时间和算法复杂度,绝对划得来。
技术原因:多进程协作
多线程的同步很简单,一个临界区就解决。进程可没那么简单,DDE太罗嗦,SendMessage容易因各进程又有多线程而死锁。
一开始的想法:
1.开始(操作准备)
2.进入临界区(线程同步)
3.写入数据 -问题:如何确定外部程序不在操作中,即便系统对线程分配时间片时能够保证不同时访问,但会有数据丢失
4.设置写信号
5.离开临界区
6.结束
分多个段后,可以蛮干向写入段写入数据,外部读线程蛮干读取,以事件同步即可
读取也是一样,只是“反客为主”而已。
天快亮了,听首歌:美丽的烟花江,仿佛就在梦里,轻凝晨露沾眼帘……
2013-12-12 07:06:06
作者:prsniper 发表于2013-12-12 7:06:23 原文链接
阅读:104 评论:0 查看评论