python - 将对象从 VBA 或 Python 之类的解释语言传递给在不同 cpu 内核上运行的其他代码如何安全?
问题描述
我最近看到了一些 VBA 代码(它是一种解释型语言)的示例,它定义了一个对象并将其传递给 python 进程,并且 python 在 VBA 对象上执行方法。
确切的代码并不重要,购买我对过程的理解是它是这样的:
- VBA解释器在一个线程中运行,初始化对象并将其传递给python进程
- Python 在单独线程上的单独进程中运行(甚至可能是 CPU 的单独核心)
- 在某些时候,python 调用了外星 VBA 对象的方法
- 然后必须调用 VBA 解释器来执行该方法
我不明白这怎么不会导致崩溃;在线程 1 上运行的 VBA 解释器需要由另一个线程调用。为什么第二个线程访问解释器是安全的,它不会中断某些东西并导致状态损坏?什么是同步事物?
Python也是解释型的,一定有类似的问题;如果它将一个对象传递给一个完全不知道的进程,例如一些不知道 python 内部工作的 C# exe,并且将尝试在没有任何好的互斥锁和锁定以使其安全的情况下访问解释器。VBA 是一种不支持编写多线程代码的旧语言,那么是否有其他机制可以保护解释器同时免受来自多个内核的调用?
解决方案
推荐阅读
- react-native - Expo 不断崩溃并显示错误消息 - dyld: Symbol not found: _FSEventStreamCreate Abort Trap 6
- c# - 在没有制造商名称的情况下安装 - Visual Studio 安装项目
- git - 错误 'git: 'remote-git+https' 不是 git 命令。尝试发布 atom 包时请参阅 'git --help'
- reactjs - 获取 API 重定向无法按我的预期工作
- regex - 正则表达式中是否有类似 $nth / counter 的东西(在 Visual Studio 代码中的文本替换上下文中)?
- asp.net - Piranha CMS 与 Angular
- css - Django CSS静态文件随机停止工作
- javascript - 使用 NextJS 启动项目
- reactjs - 无法使用带有 React 的 OpenAPI TS 模块进行编译 - “您可能需要额外的加载器来处理这些加载器的结果”
- mysql - MySQL查询获取截至当前日期当月每一天的付款总额