如何在多线程环境中使用旧的单线程 C++ 库

2024-01-18

我有一个旧的 C++ 库,它是为在单线程环境中使用而设计的。

该库公开了用于初始化的接口,这改变了库的内部数据结构,以及仅读取数据和进行计算的用法。

我的目标是在 Windows 多线程应用程序中使用这个库,不同的线程调用使用不同数据初始化的 dll 实例。

假设重写 dll 以允许多线程是禁止的,是否有某种方法可以让 DLL 的多个实例存在于同一进程中,具有单独的内存空间,或者通过其他方式获得类似的结果?


如果 DLL 包含静态资源,那么这些资源将在创建的所有实例之间共享。

一种可能的方法是创建单个实例并使用某种锁定机制限制对其的访问。根据使用情况,这可能会降低性能,但如果不修改 DLL 的内部结构,可能很难与多个实例一起工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在多线程环境中使用旧的单线程 C++ 库 的相关文章

  • 如何使用 ASP.NET MVC 编辑多选列表?

    我想编辑一个如下所示的对象 我希望用 UsersGrossList 中的一个或多个用户填充 UsersSelectedList 使用 mvc 中的标准编辑视图 我只得到映射的字符串和布尔值 下面未显示 我在 google 上找到的许多示例都
  • 我如何知道 C 程序的可执行文件是在前台还是后台运行?

    在我的 C 程序中 我想知道我的可执行文件是否像这样在前台运行 a out 或者像这样 a out 如果你是前台工作 getpgrp tcgetpgrp STDOUT FILENO or STDIN FILENO or STDERR FIL
  • 如果 JSON.NET 中的值为 null 或空格,则防止序列化

    我有一个对象需要以这样的方式序列化 即 null 和 空白 空或只是空格 值都不会序列化 我不控制对象本身 因此无法设置属性 但我知道所有属性都是字符串 环境NullValueHandling显然 忽略 只能让我找到解决方案的一部分 它 似
  • 司机和提供商之间的区别

    数据库中的驱动程序和提供程序有什么区别 有没有解释一下 不胜感激 样本 ADO NET driver for MySQL vs providerName System Data EntityClient 来自 MSDN 论坛 驱动程序是安装
  • 在 ASP.NET MVC 中将模型从视图传递到控制器

    我正在 ASP NET MVC 中开发我的第一个应用程序 但遇到了一个我无法解决的问题 即使在阅读了整个互联网之后也是如此 因此 我有几个使用视图模型创建的视图 它们是报告 这些视图模型是根据用户选择标准填充的 我正在尝试构建一种接受模型并
  • 为什么需要数字后缀?

    C 语言 我确信还有其他语言 需要在数字文字末尾添加后缀 这些后缀指示文字的类型 例如 5m是一个小数 5f是一个浮点数 我的问题是 这些后缀真的有必要吗 或者是否可以从上下文中推断出文字的类型 例如 代码decimal d 5 0应该推断
  • Docker 警告:无法从守护进程获取默认注册表端点

    在 Windows 10 上 当我调用 docker 命令时 docker pull mongo windowsservercore 我得到以下输出 Warning failed to get default registry endpoi
  • 在 C++11 中移出 stdpriority_queue 的元素

    最小的工作示例 include
  • Resharper:IEnumerable 的可能多重枚举

    我正在使用新的 Resharper 版本 6 在我的代码中的几个地方 它给一些文本加了下划线 并警告我可能存在IEnumerable 可能的多重枚举 我理解这意味着什么 并在适当的情况下采纳了建议 但在某些情况下 我不确定这实际上是一个大问
  • EnumDisplayDevices 与 WMI Win32_DesktopMonitor,如何检测活动监视器?

    对于我当前的 C 项目 我需要为在大量计算机上连接并处于活动状态的每个监视器检测一个唯一的字符串 研究指出了两种选择 使用 WMI 并查询 Win32 DesktopMonitor 以获取所有活动监视器 使用 PNPDeviceID 来唯一
  • 线程上下文类加载器和普通类加载器的区别

    线程的上下文类加载器和普通类加载器有什么区别 也就是说 如果Thread currentThread getContextClassLoader and getClass getClassLoader 返回不同的类加载器对象 将使用哪一个
  • 从 NumPy 数组到 Mat 的 C++ 转换 (OpenCV)

    我正在围绕 ArUco 增强现实库 基于 OpenCV 编写一个薄包装器 我试图构建的界面非常简单 Python 将图像传递给 C 代码 C 代码检测标记并将其位置和其他信息作为字典元组返回给 Python 但是 我不知道如何在 Pytho
  • Autoconf 问题:“错误:C 编译器无法创建可执行文件”

    我正在尝试使用 GNU 自动工具构建一个用 C 编写的程序 但显然我设置错误 因为当configure运行 它吐出 configure error C compiler cannot create executables 如果我看进去con
  • C 语言中的 Alpha 混合 2 RGBA 颜色[重复]

    这个问题在这里已经有答案了 可能的重复 如何快速进行阿尔法混合 https stackoverflow com questions 1102692 how to do alpha blend fast 对 2 个 RGBA 整数 颜色进行
  • Linq.Select() 中的嵌套表达式方法调用

    I use Select i gt new T 每次手动点击数据库后将我的实体对象转换为 DTO 对象 以下是一些示例实体和 DTOS 用户实体 public partial class User public int Id get set
  • Xamarin.Forms UWP 项目中标题栏和选项卡之间令人恼火的空白

    我几乎是新手Xamarin Forms我正在开发一个相当简单的跨平台应用程序 该应用程序在 Android 中显示得足够好 但在 UWP 中却出现了一个愚蠢的空白 该项目由一个 TabbedPage 组成 其中包含 4 个 Navigati
  • printf或iostream如何指定点后的最大位数

    字符串采用什么格式printf or iomanip我应该使用 iostream 中的运算符以以下格式打印浮点数 125 0 gt 125 125 1 gt 125 1 125 12312 gt 125 12 1 12345 gt 1 12
  • 将 char 绑定到枚举类型

    我有一段与此非常相似的代码 class someclass public enum Section START MID END vector section Full void ex for int i 0 i section
  • 如何在c linux中收听特定接口上的广播?

    我目前可以通过执行以下操作来收听我编写的简单广播服务器 仅广播 hello int fd socket PF INET SOCK DGRAM 0 struct sockaddr in addr memset addr 0 sizeof ad
  • C++ Boost ASIO 简单的周期性定时器?

    我想要一个非常简单的周期性计时器每 50 毫秒调用我的代码 我可以创建一个始终休眠 50 毫秒的线程 但这很痛苦 我可以开始研究用于制作计时器的 Linux API 但它不可移植 I d like使用升压 我只是不确定这是否可能 boost

随机推荐

  • 如何设置本地环境以使用 Chrome 的最新 SameSite cookie 更改?

    我正在使用 ReactJS 构建一个应用程序 并且随着 Chrome 的最新更改 我们无法取回 cookie 因为它是由中央身份验证服务提供的 当然 在产品中它将与 JS 应用程序具有相同的域 但目前它正在本地破坏该应用程序 我知道关于Sa
  • 当 UILabel 文本属性设置为 nil 或“”时,会使 UILabel 从视图中消失(Swift / Autolayout / iOS9.1)

    我正在学习斯坦福 2015 年冬季 Swift iOS 课程 在做作业时 我遇到了一个我想改变的行为 我使用视频中描述的自动布局 使显示引脚指向前视图边缘和后视图边缘 并且计算器应用程序 显示 UILabel 可以使用初始值为 0 的值 并
  • 如何在 sqlalchemy 中查询类内部

    我有一个与 Item 类具有一对多关系的 User 类 class User Base items relationship Item def method self for item in self items if self items
  • 用于解压缩的免费 JPEG2000 库或 SDK [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • C# Windows 无法在顶部打开

    我编写了一个相对较大的应用程序 其中有很多对话框和表单等 我用以下命令打开它们Form ShowDialog 很多时候 表单在现有窗口后面打开 例如昨天 我在一台打开了其他几个程序的机器上测试它 许多 Windows 资源管理器窗口 一些
  • 学说 2 多对多(产品 - 类别)

    您好 我在项目 产品 和类别之间有多对多的关系 我使用这三个实体实现 项目实体 Entity Table name items use Doctrine Common Collections ArrayCollection class It
  • Node.js require() 与 RequireJS?

    你好 使用 RequireJS 我可以设置这样的基本路径 base app 所以当我在 app foo bar 例如 我有一个使用的脚本require foo 然后 RequireJS 会搜索 app foo js并且不在node modu
  • 分割空格分隔的字符串

    String numbers 5 1 5 1 那么 是不是 String splitNumbers numbers split or String splitNumbers numbers split s 寻找 5 1 5 1 知道为什么两
  • 如何在maven中保护和加密setting.xml密码文件?

    如何保护 maven 中 settings xml 中的服务器 代理设置 我认为这主要是关于存储在那里的登录名和密码 并且我认为这些不能明确地放置在那里 它们应该存储在环境变量 等中吗 安全settings xml 的示例应该是什么样子 您
  • 获取存储库中的所有文件夹和文档 Alfresco Restful

    我正在学习露天 我想使用 Restful API 获取存储库中的所有文件夹和文档 我怎样才能做到这一点 网页脚本是构建您自己的 API 的好方法 但在这种情况下 您应该可以使用 Alfresco 为您提供的 OOTB 内置 API 您可以使
  • MVC 与区域 - Html.ActionLink 返回错误的 URL/路线?

    我正在使用 MVC3 并在我的应用程序中有区域 一般来说 一切正常 我可以导航到我的区域 例如 Admin Area Controller Department 如下所示 然而 我注意到 如果我没有在 ActionLink 中指定区域 例如
  • 在循环内增加时间 15 分钟[重复]

    这个问题在这里已经有答案了 我想创建一个下拉菜单 它将当前时间作为开始时间 直到 24 小时为止 就像直到 24 小时之前 所以在这之间它将显示每 15 分钟增量的时间 问题是 当我尝试运行循环时 起始时间还可以 但在下一个循环中 时间会跳
  • 使用apache服务器时覆盖python3默认编码器

    我正在运行一个 apache 服务器 它服务于一个名为巧妙 http inginious readthedocs io Getting UnicodeDecodeError ascii 读取带有希伯来字符的文件时 我读到您可以使用环境变量更
  • 如何在Client中获取socket.io客户端的session id

    我想在我的 socket io 客户端中获取客户端的会话 ID 这是我的 socket io 客户端 var socket new io Socket config host port config port rememberTranspo
  • Google App Engine app.yaml 中的反向skip_files

    我目前有以下内容skip files在我的 app yaml 中 skip files json yaml Gruntfile js bower components node modules src tests tmp 这实在是太臃肿了
  • Ruby 中的“<<-”是什么意思?

    例如 code lt lt EOH bundle install bundle exec unicorn c etc unicorn cfg D EOH 这段代码有什么作用 什么是 lt lt called 它被称为定界符 定义多行字符串的
  • 在 CATextLayer 中显示属性字符串

    我有一个简单的示例应用程序 我在其中创建了一个CATextLayer并设置其string财产给NSAttributedString 然后我将该 CATextLayer 添加到视图中 import
  • 给定一个整数数组,找到第一个唯一的整数

    给定一个整数数组 找到第一个唯一的整数 我的解决方案 使用std map 将整数 数字作为键 其索引作为值 一一放入其中 O n 2 lgn 如果有重复 则从地图中删除该条目 O lg n 将所有数字放入映射后 迭代映射并找到索引最小 O
  • 如何覆盖视频的 i 帧?

    我想销毁视频的所有 i 帧 这样做我想检查仅加密视频的 i 帧是否足以使其无法观看 我怎样才能做到这一点 仅删除它们并重新压缩视频与真正覆盖流中的 i 帧而不重新计算 b 帧等不同 使用 libavformat 来自 ffmpeg 的库 您
  • 如何在多线程环境中使用旧的单线程 C++ 库

    我有一个旧的 C 库 它是为在单线程环境中使用而设计的 该库公开了用于初始化的接口 这改变了库的内部数据结构 以及仅读取数据和进行计算的用法 我的目标是在 Windows 多线程应用程序中使用这个库 不同的线程调用使用不同数据初始化的 dl