90分 求解答几个疑惑

liuzu2016 2012-06-12 09:30:43
1


内存映射文件共享------------ 进程通信

个人没有看出啥意义来?


比如:我在a.exe 定义一个字符串
然后createfile, createmappingfile , mapviewoffile, unmapviewoffile

在b.exe中

openmappingfile, mapviewoffile,unmapviewoffile

能做的,只是 读取到 a.exe中的的那个字符串


应用太简单了吧 太简单了,


有意思吗啊????




2. 用windows api 搞一个定时器怎么做???

不要太复杂的, 最简单的那种



我要凡在控制台中



...全文
181 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
东莞某某某 2012-06-14
  • 打赏
  • 举报
回复
原因:

原型:
UINT_PTR SetTimer(
HWND hWnd, // handle to window
UINT_PTR nIDEvent, // timer identifier
UINT uElapse, // time-out value
TIMERPROC lpTimerFunc // timer procedure
);

参数hWnd :
[in] Handle to the window to be associated with the timer. This window must be owned by the calling thread. If this parameter is NULL, no window is associated with the timer and the nIDEvent parameter is ignored.
IVERS0N 2012-06-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用 3 楼 的回复:

2楼,我说的正是 进程通信的事情,

没发现内存映射文件 共享 对于进程通信有优势?


第二: 进程通信, 可以用dll, 把要共享的诗句用共享段即可

没有必要内存映射文件

使用DLL来共享当然可以,但这样是有局限的,比如安全性,还有不可能为了进程通信专门用一个DLL吧。

内存映射效率非常高的,下面是引用核心编程中的一段话:

……
[/Quote]

学习了
东莞某某某 2012-06-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

2楼,我说的正是 进程通信的事情,

没发现内存映射文件 共享 对于进程通信有优势?


第二: 进程通信, 可以用dll, 把要共享的诗句用共享段即可

没有必要内存映射文件
[/Quote]
使用DLL来共享当然可以,但这样是有局限的,比如安全性,还有不可能为了进程通信专门用一个DLL吧。

内存映射效率非常高的,下面是引用核心编程中的一段话:

Wi n d o w s总是出色地提供各种机制,使应用程序能够迅速而方便地共享数据和信息。这些机制包括R P C、C O M、O L E、D D E、窗口消息(尤其是W M _ C O P Y D ATA)、剪贴板、邮箱、管道和套接字等。在Wi n d o w s中,在单个计算机上共享数据的最低层机制是内存映射文件。不错,如果互相进行通信的所有进程都在同一台计算机上的话,上面提到的所有机制均使用内存映射文件从事它们的烦琐工作。如果要求达到较高的性能和较小的开销,内存映射文件是举手可得的最佳机制。

liuzu2016 2012-06-13
  • 打赏
  • 举报
回复
#include "stdafx.h"

#include <windows.h>
#include<iostream>

using std::cout;
using std::endl;
#define myID 1000

void CALLBACK myfun(HWND, UINT,UINT_PTR nEventID,DWORD)
{
if(nEventID==myID)
cout<<"nihao"<<endl;
}



int main()
{

char c;

c=getchar();

if(c=='a')
{
::SetTimer(NULL,myID,2000,myfun);
}

c=getchar();

return 0;

}



谁试试我的代码,不对啊,这个在控制台下的定时器不行啊

帮忙修改一下吧

cobra_chen 2012-06-13
  • 打赏
  • 举报
回复
进程通信,用内存映射,楼上说的很清楚了。

-
定时器。
可以用线程或者进程。
一个执行线程或进程执行用Sleep。到时间就启动另一个线程或进程执行代码。
CandPointer 2012-06-13
  • 打赏
  • 举报
回复
windows平台, 进程通信, 效率最高性能最好的就是 内存映射文件
liuzu2016 2012-06-12
  • 打赏
  • 举报
回复
定时器
IVERS0N 2012-06-12
  • 打赏
  • 举报
回复
2.Sleep(1000) //1秒
liuzu2016 2012-06-12
  • 打赏
  • 举报
回复
2楼,我说的正是 进程通信的事情,

没发现内存映射文件 共享 对于进程通信有优势?


第二: 进程通信, 可以用dll, 把要共享的诗句用共享段即可

没有必要内存映射文件

东莞某某某 2012-06-12
  • 打赏
  • 举报
回复
1 , 我觉得你要好好理解下windows内存管理这方面的知识。内存映射的用途:
• 系统使用内存映射文件加载 e x e和D L L文件。这大大节省页文件空间和应用程序启动运行所需的时间。

• 可以使用内存映射文件来访问磁盘上的数据文件。使你不必对文件执行I/O操作,并且可以不必对文件内容进行缓存。

• 可以使用内存映射文件,使同一台计算机上运行的多个进程能够相互之间共享数据。

一般使用页文件来映射。


2,用 可等待计时器。 CreateWaitableTimer
qq120848369 2012-06-12
  • 打赏
  • 举报
回复
1,共享内存很给力,可以在里面建立一颗树,建立一个环形队列,建立一个哈希表,无所不能,支持多进程并发操作,需要在共享内存里放一个进程共享的Mutex,或者使用一个独立的2值信号量做同步即可。

2,windows不会,路过。

64,266

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧