multithreading - 相同版本但具有不同配置选项的两个 perls 之间的兼容性?
问题描述
例如,如果我有两个相同版本的 Perl 配置,
- 一个编译
-Dusethreads
- 一个没有它编译
这两个版本能否共享相同的corelist 模块?或者我也需要单独打包一个。这种方法是否存在已知的 XS 代码编译异常?是否有可能针对线程 Perl 构建的任何东西都可以与非线程 Perl 一起使用?假设版本相同。
解决方案
一般来说,XS 模块在不同的构建选项之间(以及不同的 perl 版本之间)是不兼容的。因为如果不出意外,不同的构建选项可能会导致结构的大小和对齐方式在 perl 核心和编译模块之间发生变化,如果两者都可以访问相同的结构(例如 perl 标量变量),则会导致崩溃。同样在包含线程构建的 MULTIPLICITY 构建中,大多数 perl 核心 API 函数都添加了一个额外的参数(指向当前解释器的指针),并且在没有该指针的情况下调用该函数,反之亦然,将再次导致崩溃。
推荐阅读
- swift - 如何优化快速代码以在可以滚动和缩放的图形中实时绘制大型数据集
- javascript - 如何使用变量访问键/值对?
- javascript - 为制表器中的每一行动态设置列编辑器
- apache-kafka - Quarkus kafka多线程消息消费?
- java - 为什么在平面图中模拟 Mono.empty() 的响应会出错?
- python - 如何在 azure 中获取容器中所有文件的完整路径
- ruby - 向方法添加了超时,现在第一个规范总是失败
- tensorflow - 有没有办法将本机 tf Attention 层与 keras Sequential API 一起使用?
- javascript - 使用 Vue-Router 更改路由返回的数据
- azure - 在 Azure 上部署 Apache Kafka