openGL和驱动和应用层共享内存存

没有更多推荐了,
不良信息举报
举报内容:
共享内存(Shared Memory)介绍
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!进程间通信使用共享内存_Windows Communication_平台,框架和库_或代码
| 文章 >> 平台,框架和库 >> Windows Communication
进程间通信使用共享内存
{A0}本文介绍了一个客户机/服务器模型,其中通信进程之间使用共享内存。由于共享内存只有一台机器上使用,全过程必须在同一台计算机上运行。这是一个明显的限制。然而,其优点是通信速度(注,速度可能会造成严重的坏实施损害上双方 - 客户端和服务器)。另一个好处是,这种方法可在任何平台(Windows 95/98的以及Windows NT)。使用共享内存,使我们能够设计一个系统,我们有一个单一的服务器和多个客户端与服务器通信的两个方向。通信是由客户端发起 - 服务器通常在闲置客户端的请求处于等待状态。通信是线程安全的,是一个感,只有一个单一的客户端与服务器交换信息在任何时刻。客户端和服务器都必须创建几个全局命名对象:文件映射对象映射到一个特定应用的指针在每个过程中的结构。(2)命名服务器和一个单一的的事件之间的沟通客户端。互斥同步超过多个客户端之间的服务器。不同客户之间的同步解释以下伪代码:
if WaitForSingleObject(global named mutex object) is free then
execute communication session with the server (see below)
ReleaseMutex(global named mutex object)这将确保只有一个单一的客户端可能会执行通信会话与服务器。虽然通信会话处于活动状态,每隔客户正在等待全球命名的互斥对象(当然,只有当在完全相同的时刻,它需要与服务器通信的任何其他客户端)。这种保护是不是需要在服务器端(它不需要全球命名的互斥对象),因为客户端的请求guarantied来自一个单一的客户端一次。下面的伪代码显示了如何进行通信会话服务器和客户端之间的:客户端{C}服务器端
if WaitForSingleObject(m_hExec, timeout) is WAIT_OBJECT_0 then
Get values from the application specific structure
Set return values
SetEvent(m_hDone)
在WaitForSingleObject的使用在客户端超时取决于服务器内完成的任务。为了加快通信,服务器需要尽可能快。在WaitForSingleObject的使用在服务器端的超时取决于在服务器端执行。示例代码(简单)使用一个计时器处理程序,定期检查客户端请求。在实际生产中代码,应该使用一个单独的线程和WaitForMultipleObjects函数等待的事件,将事件m_hExec,并在同一时间关闭线程(应用程序退出)。在这种情况下,超时可能是无限的。这将显着提高服务器的性能,因为这将能够以响应客户端请求immediatelly(延迟可能只有当它已处理另一个客户端的请求)。通常情况下,服务器首先启动,以后开始的任何客户端将连接到服务器。示例项目设计的方式,一审自动服务器和任何其他实例开始,后来是一个客户端。通讯正确处理服务器关闭时的情况而客户running.什么需要特殊考虑当服务器和客户端是不同的,是初始化阶段不同的应用。在这种情况下,有一种可能性,以防止启动客户端,如果服务器没有运行,或允许客户端运行,但检查和连接到服务器时,客户端需要发送到服务器的东西。下面的伪代码显示初始化
客户端和服务器:客户端
m_hMap = OpenFileMapping(...)
if m_hMap is NULL then
Server is not running
pointer to structure = MapViewOfFile(m_hMap, ...)
m_hMap = CreateFileMapping(...)
if GetLastError() is ERROR_ALREADY_EXISTS then
Server is either started for the second time or previous server instance
is killed while the clients are still running.
pointer to structure = MapViewOfFile(m_hMap, ...)
必须防止多个服务器实例。这可以通过使用任何的技术,以防止一个单一的应用程序的多个实例。这样的设计是用来在运行时监控代理和执行非常好。多个客户端(从不同的proceses和线程)能与单个服务器通信一个非常快速和可靠的方式。
关于作者:
中国我是一名编程爱好者,谢谢orcode.com为我们提供一个学习和分享的平台。有什么问题。可以就本内容回复,我看到时。会尽量回复的。
评论会员:
时间:s4nCh0很好的例子,
我想唯一正确的是:m_hMap = ::CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,
sizeof(TSharedMemory),
"ApplicationSpecificSharedMem");这其中:
m_hMap = ::CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,
sizeof(TSharedMemory),
"ApplicationSpecificSharedMem");
如果您运行CreateFileMapping失败,在64位编译的原始版本(替换为0xFFFFFFFF - > 0xFFFFFFFFFFFFFFFF)评论会员:
时间:charian0920嗨,
我工作的一个库创建,写入和读取共享内存。在创建共享内存时,我指定的共享内存最大尺寸,基于一些计算。不过,我注意到,我的媒体库的应用程序使用的内存使用量是非​​常大的,即使有没有在共享内存中的数据
我的问题是,是否可以动态地增加共享内存的大小产生的呢?
欣赏你的帮助。
预先感谢您 评论会员:
时间:willwang嗨,所有:我只是创建一个共享内存成功地在服务器和opend客户端上。服务器:CreateFileMapping(),MapViewOfFile()客户端:OpenFileMapping()需要,MapViewOfFile()所有的事情是正确的。,但是当我充满在客户端和服务器SetEvent来,服务器不能得到正确的内​​存。唯一的例外是:0xC0000005:读取位置0 x访问冲突有什么不对??THX !!!!!!!!!! 评论会员:
时间:Ashutosh说Bhawasinka?我怎么会从另一个进程中调用函数
我认为这是通过CreateRemoteThread的(可能)?
你能不能给一个代码(步骤),请
的问候,Rammy。
Rammy 评论会员:
时间:tomerg22喜我注意到,如果服务器和客户端根据不同的用户上下文运行,他们将无法沟通... ...在这个例子中都成为服务器。
此外,如果您运行根据不同用户的上下文中(但两者在相同的用户名)复制这个项目中使用"运行",都成为服务器。
干杯Ashutosh说评论会员:
时间:mora26喜所有IM熟悉与IPC共享内存的方法与CreateFileMapping,但如何你共享内存已分配和填补?分配一个驱动程序,例如通过PTR一个过程和其他需要访问该缓冲区。
如果这些过程之一,是32位,另一种是64位呢?
感谢,汤姆 评论会员:
时间:空开发嗨,任何人都可以告诉我在Unix共享内存的工作mm.h的C库的东西?
感谢 评论会员:
时间:阿西夫卡塔克您的文章对我是非常有益的... ... 多谢了! 评论会员:
时间:午Suralta您好IPC方法可以用来分享两个进程之间的数据,但如果我想要一个进程访问其他进程是由两个过程是独立的进程的对象做什么。如果我有两个进程A和B,A已通过新的"objA"创建一个对象,然后如何从进程B访问和使用这个指针,使用指针对象与此相关的功能,这可以解释。在通常意义上的,我水湿访问此对象,因为它是在内存中的进程A. 空间中创建任何一个可以指导我的方式。PLZ发送一份拷贝给我,如果你可以对我的电子邮件地址
Thanx提前 评论会员:
时间:cristip32?没有人知道多少内存可以共享我尝试使用了大量的内存,和我得到了一个非法的内存访问异常。有谁知道如何增加共享内存的大小? 评论会员:
时间:Morrowyn MSDN说,"备份文件映射对象由操作系统分页文件",所以我猜是你的限制评论会员:
时间:xxgreg大家好,
进出口琢磨速度有多快,我可以分享图片从一个应用程序过程中其他进程呢?我可以达到每秒30帧的速度,使用图片的pixel大小?
的问候,Morrowyn 评论会员:
时间:史蒂芬普瓦里埃行...我绝对不是大师... ...但我认为这是一个小问题...
如果服务器过程中的"执行"的消息,那么客户端的代码超时时间过长... ...并释放互斥。
互斥被释放后,服务器完成处理。 然后写入到共享内存其结果,可能损坏随后的"执行"的消息。
我不是完全确定的解决方案... ...但我觉得可能任何代码更新的共享内存应该获得跨进程互斥...这意味着在服务器和客户端需要使用互斥...
建议人?BR}
评论会员:
时间:sreemail您好,
这是一个伟大的文章。我试图做同样的事情。我启动一个服务,我的程序使用共享内存和事件服务通信。
它的伟大工程,在Windows 2000 Professional客户端计算机。但是当我运行Windows 2000 Server上,它不会。我使用的是远程客户端与服务器通信。
当我使用远程客户端终端服务器上运行,不serverin这种情况下创建的所有进程。那么为什么这不是工作?我需要做别的事情吗?
我试图调试,我发现该服务从来没有得到通知,当程序调用SetEvent。我尝试使用OpenEvent打开服务的事件,它返回一个错误代码2(ERROR_FILE_NOT_FOUND),而不是开放的事件对象。此外,CreateEvent创建一个新的事件,而不是返回一个错误代码183(ERROR_ALREADY_EXISTS)服务。它返回本地机器上一切正常183。
我很困惑是什么文件寻找?我缺少的东西
任何想法表示赞赏。 谢谢。 评论会员:
时间:雨果霍尔曼问题是两折。即使你是同一台机器上运行的进程,Windows 2000 Server的终端客户将单独的内存空间,使他们从内存空间运行的主会话分开。 IE浏览器。如果你坐在机器。此外,还要确保您有足够的privledges这是新服务的默认用户与本地用户交互。
有些事情,你可以尝试使用不同的背景下运行的客户端。也可以尝试修改本地组策略设置"用户权利指派"下。参见微软网站,如果你是不确定的组策略。
你会想要做的研究与开发服务器上。
希望这有助于。 评论会员:
时间:雨果霍尔曼你的例子包含一个错误。如果您关闭该服务器,您将无法重新启动一个新的服务器实例。它总是会重新启动客户端。
其余的是完美的!STEF
Progamming看起来... ...就像吸毒我觉得我没过量。
&桌面&网页开发&移动开发&数据库&多媒体&编程语言&平台,框架和库&编程通用&图形/设计&开发周期&一般阅读&第三方产品&作者资源&其他
快速解答标签
价值作最多怎么关闭独立显卡共享内存?_百度知道
怎么关闭独立显卡共享内存?
2g内存被显卡霸占了700多m
我有更好的答案
1、可以去下载你的显卡程序的套件,软件里面是有这个功能的,有关闭共享内存的这个选项,有的软件还可以选择共享多少,什么时候共享等。2、使用rivatuner可以关闭。Riva Tuner是一款由Alex Unwinder发布的专门针对NVIDIA显卡的修改工具,它包含了很多功能,如:显卡超频、OpenGL调节、DirectDraw&Direct3D调节、桌面和覆盖层色彩调节、刷新率调节等。3、一般情况下开机按DEL键进入BIOS后左面第三或第四项“Advanced chipset setup”-“ONBOARD VGA SHARE MERNORY”应该就是调整显存的选项。4、其实不用关闭,显卡共享内存就是显卡在本地显存不够用的情况下,动态调用内存作为显存使用的那部分内存。可以在Bios里设定显卡调用的内存大小。
采纳率:65%
来自团队:
不建议关闭显卡共享内存,建议加大物理内存,或者加大虚拟内存。
本回答被提问者和网友采纳
(bios里面设置)果断上条子啊,关了显卡渲染会很卡
找不到那个选项,本来就是板载1g的
为您推荐:
其他类似问题
共享内存的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。opencv、opencl、opengl、openmp区别
OpenCV的全称是:Open&Source&Computer&Vision&Library。OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac&OS操作系统上。它轻量级而且高效——由一系列&C&函数和少量&C++&类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。该库也有大量的Python,&Java&and&MATLAB/OCTAVE&(版本2.5)的接口。这些语言的API接口函数可以通过在线文档获得。如今也提供对于C#,Ch,&Ruby的支持。
OpenCL(全称Open&Computing&Language,开放运算语言)
是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景。
OpenGL(全写Open&Graphics&Library)是个定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库。
(全写&Open&Multi-Processing)
OpenMp是由OpenMP&Architecture&Review&Board牵头提出的,并已被广泛接受的,用于共享内存并行系统的多处理器程序设计的一套指导性的编译处理方案(Compiler&Directive)。OpenMP支持的编程语言包括C语言、C++和Fortran;而支持OpenMp的编译器包括Sun&Compiler,GNU&Compiler和Intel&Compiler等。OpenMp提供了对并行算法的高层的抽象描述,程序员通过在源代码中加入专用的pragma来指明自己的意图,由此编译器可以自动将程序进行并行化,并在必要之处加入同步互斥以及通信。当选择忽略这些pragma,或者编译器不支持OpenMp时,程序又可退化为通常的程序(一般为串行),代码仍然可以正常运作,只是不能利用多线程来加速程序执行
openMp和openCl都是用于高性能计算机,但是关键点不一样,前者主要是并行,后者主攻是异构。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。在Wayland 中通过EGL使用OpenGL_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
在Wayland 中通过EGL使用OpenGL
&&Wayland窗口显示方式有两种:共享内存和EGL。本文的内容就是记录下Wayland中使用EGL的方法。
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 java 和c共享内存 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信