【发布时间】:2018-11-13 18:45:46
【问题描述】:
从 Perl 5.8 开始,线程编程已经可以使用模型 称为解释器线程,它提供了一个新的 Perl 解释器 每个线程,默认情况下,不会产生任何数据或状态信息 在线程之间共享。
以上引用中提到的data 或state 信息类型是什么?根据perldoc perlxs:
从 Perl 5.8 开始,定义了一个宏框架以允许 静态数据安全地存储在将被访问的 XS 模块中 来自多线程 Perl。
所以在我看来静态变量是在线程之间共享的?但是 Perl 变量不是共享的吗? (我想弄清楚到底什么样的数据是线程安全的,以及如何创建线程安全的模块)
【问题讨论】:
-
我认为 Perl 级别的变量(任何具有
SV或来自newSV的变量)都不会共享,而 C/XS 级别的任何变量都是共享的,因为 C 就是这样。
标签: multithreading perl xs