我想在多个进程中共享一个链表,请问一般有几种方法可以处理这样的问题?各有什么优缺点? 简单给个思路就行,但请同时介绍下各种方法的优缺点.很感谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 最简单有效的就是放一个全局的,用一个临街区控制各线程的安全访问;全局,初始:CRITICAL_SECTION cs;InitializeCriticalSection(&cs)各线程访问:EnterCriticalSection(&cs);...//List..LeaveCriticalSection(&cs);over:DeleteCriticalSection(&cs); 看错..是要进程啊.进程一般有四个吧..还有么?1.共享DLL2.内存映射文件3.通过WM_COPYDATA4.ReadProcessMemory和WriteProcessMemory都还可以吧..1我只用过简单变量共享.3简单点.如果是又读又写的,还得加上Mutex安全访问. 2.内存映射文件 3.通过WM_COPYDATA这两个我用过,但有点不合适,另外两个我不太懂,我先去查下资料. 1.共享DLL如果用这种的话,是不是在dll中分配每个链表页的内存?用普通的分配函数是不是不行? 如果是可变链表我不知道怎么处理了..好像是dll共享,都是得静态初始化的.能不能这样呢..dll中共享一个指针.然后进程中,开辟GlobalAlloc()分配空间..? 另外我查了下,好像GlobalAlloc()不可以分配全局的内存. 本质问题是IPC(interprocess communication), 解决方法很多 ,不过楼主提到的WM_COPYDATA排除掉。指针数据还是用DCOM或RPC吧。 不行,你必须在DLL中自己写个分配算法,从FileMapping的空间里分配你的链表节点,只有这样你的链表节点才可以被所有进程访问。 mfc关于CEDIT控件响应鼠标单击事件的问题 ado 读取bigint 字段出错 调用SHFileOperation问题进行文件COPY问题 求位图24位转16位(565)代码 非常希望大家帮忙测试一下这个软件---- 使用ado调存储过程如何得到return的返回值? 为什么程序注册不了控件 VC高手请进,关于CListCtrl的超级难题 登陆域之后为何有如此提示? 关于cgridctrl虚拟模式下单元格太小,内容显示不全的问题 怎么得到cedit中字符的高度 CxImage和corona中重定义了
全局,初始:
CRITICAL_SECTION cs;
InitializeCriticalSection(&cs)各线程访问:
EnterCriticalSection(&cs);
...//List..
LeaveCriticalSection(&cs);over:
DeleteCriticalSection(&cs);
进程一般有四个吧..还有么?
1.共享DLL
2.内存映射文件
3.通过WM_COPYDATA
4.ReadProcessMemory和WriteProcessMemory都还可以吧..1我只用过简单变量共享.3简单点.
如果是又读又写的,还得加上Mutex安全访问.
3.通过WM_COPYDATA这两个我用过,但有点不合适,另外两个我不太懂,我先去查下资料.
好像是dll共享,都是得静态初始化的.
能不能这样呢..dll中共享一个指针.
然后进程中,开辟GlobalAlloc()分配空间..?
本质问题是IPC(interprocess communication), 解决方法很多 ,不过楼主提到的WM_COPYDATA排除掉。
指针数据还是用DCOM或RPC吧。
不行,你必须在DLL中自己写个分配算法,从FileMapping的空间里分配你的链表节点,只有这样你的链表节点才可以被所有进程访问。