MapViewOfFile中的信号量的最佳方法 –C ++【JAVA教程】

!
也想出现在这里? 联系我们
信息

MapViewOfFile中的信号量的最佳方法 –C ++,第1张

概述MapViewOfFile中的信号量的最佳方法 – C ++

你好StackOverflow的用户。

我一直在从C ++的Win32 API的MapVIEwOffile工作,我是一个新手,但我一直在试图为一个mapvIEw文件创build一个信号量,所以一个实例不能复制到它,除非另一个实例已经复制到它,主实例已经读取它。

我得到的想法是创build不同的方法来做到这一点,但我需要知道做到这一点的最佳方法。

1)使用while循环等待mapvIEwfile为空。

我试图做到以下几点:

你可以访问标准的windowsstring,如“取消”?

设置非Office文件的windows文件属性

windows Phone 8上的ARM NEON程序集无法正常工作

有一个编程方式,我可以挂钩到用户login和注销(windows SBS 2003)的目标是简单的日志logging?

exec():在windows中引用完整的命令

mapVIEwfile = (LPTSTR) MapVIEwOffile(mapVIEw,file_MAP_ALL_ACCESS,SH_MAX_MEMORY); if(mapVIEwfile!=NulL){ // Wait for the mapvIEwfile to be empty. while(mapVIEwfile!=\”\”); // This while is only for delay the operation and wait for the mapvIEwfile it\’s empty,we don\’t need any action in this while. copyMemory((PVOID)mapVIEwfile,defaultalloc,(_tcslen(defaultalloc) * sizeof(TCHAR))); UnmapVIEwOffile(mapVIEwfile); } CloseHandle(mapVIEw);

所以,当mapvIEwfile是空的时候,while被跳过,“secondary”实例复制到它,然后主实例读取它并清空mapvIEwfile,这会生成一个信号量。

2)使用互斥体

另一种方法是使用CreateMutex的Win32 API中的互斥体

我还没有与此工作,但我想我可以做这个我想做的事情。

所以,我的问题如下:

哪种方式最好做我想做的事情? (在1段中解释)

mapvIEwfile这样做没有问题吗? (记住我想要与主实例通信两个或多个实例)。

这些是问题,谢谢。

为什么MS不能使用.Net打开?

windows堆栈跟踪中的函数名称

Python popen python.exe

如何使用nodeJs禁用Chrome的会话恢复警告?

永远不会结束Win32消息循环

您正在寻找同步访问共享资源。 要做到这一点的方法是使用同步对象。 这意味着使用互斥体。

使用互斥意味着你可以做空闲的等待而不是繁忙的循环。 而且你也不需要关心编译器优化掉while循环中mapVIEwfile的读取。 如果你有多个进程,那么你就有了一个数据竞争,如果没有互斥或者等价的话,你就无法解决这个问题。 您的第一个选项在这种情况下无法工作。

顺便提一句,你需要在while循环测试中使用strcmp 。 这是因为mapVIEwfile!=\”\”总是评估为真。

总结

以上是内存溢出为你收集整理的MapViewOfFile中的信号量的最佳方法 – C ++全部内容,希望文章能够帮你解决MapViewOfFile中的信号量的最佳方法 – C ++所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞194 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容