gpt4 book ai didi

c++ - 什么时候会使用未命名的共享内存?

转载 作者:可可西里 更新时间:2023-11-01 14:42:12 34 4
gpt4 key购买 nike

您什么时候会选择在 Windows 中使用未命名的共享内存?

在我看来,线程之间的消息传递不是很有用。可以改为将指向结构/变量的指针传递给工作线程,并将其用作共享内存,而不是调用 CreateFileMapping 系统调用。

最佳答案

使用未命名共享内存的一个原因是将对文件映射的访问限制为仅由创建进程为其提供句柄的那些进程。这避免了两个问题:

  • 任何知道该名称并具有创建映射文件的足够访问权限的进程都可以占用您的命名对象,从而阻止或干扰其合法使用 - 这会导致拒绝服务攻击。
  • 意外而非恶意的名称冲突。

当您不使用名称时,您可以确保只有您希望访问的进程才能获取它。来自MSDN docs for CreateFileMapping :

A single file mapping object can be shared by multiple processes through inheriting the handle at process creation, duplicating the handle, or opening the file mapping object by name.

关于c++ - 什么时候会使用未命名的共享内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4213347/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com