Tcl 扩展:扩展的 ClientData 的生命周期

2023-12-25

重要的本机扩展将需要每个解释器的数据 动态分配的结构。

我目前正在使用Tcl_SetAssocData,有一个对应的密钥 扩展名和适当的删除例程, 以防止此内存泄漏。

然而,Tcl_PkgProvideEx 也允许记录这样的 信息。该信息可以通过以下方式检索 Tcl_PkgRequireEx。关联扩展的数据结构 其包装看起来比“抓包”更自然 关联数据;然而 Pkg*Ex 例程不提供 自动调用删除例程。所以我想我需要 继续使用 AssocData 方法。

Pkg*Ex 例程是为哪些情况设计的?

此外,Tcl 库允许安装 ExitHandler 和 ThreadExitHandler。改相 手动,用于将缓冲区刷新到磁盘等。

还有其他情况需要使用 ExitHandlers 吗?

当Tcl调用exit时,Tcl_PackageUnloadProcs被调用吗?


整个扩展 ClientData 适用于想要发布自己的存根表(即表示精确 ABI 的有组织的函数列表)的扩展other扩展可以构建。这是一件非常罕见的事情。如果您不想要它,请保留 NULL(如果您需要,请直接联系 Tcl 核心开发人员的邮件列表;我们在这方面有相当多的经验)。由于它是针对ABI结构的,所以它是strongly预计是纯静态数据,因此不需要删除。动态数据应通过不同的机制发送(例如,通过 Tcl 解释器或通过 ABI 调用函数)。

退出处理程序(可以在多个级别注册)是当您必须在适当的时间删除某些资源时使用的东西。典型的兴趣点是当口译员(aTcl_Interp结构)正在被删除,当一个线程被删除时,以及当整个进程消失时。哪些资源需要专门删除?嗯,通常很明显:文件句柄、数据库句柄等等。笼统地回答是很尴尬的,因为细节非常重要:提出更具体的问题以获得量身定制的建议。

但是,包卸载回调仅在响应unload命令。与包加载回调一样,它们使用“特殊函数符号”注册,如果它们不存在,则unload命令将拒绝卸载包。大多数软件包不使用它们。用例是存在非常长生命周期的进程,需要添加额外的可升级功能。

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

Tcl 扩展:扩展的 ClientData 的生命周期 的相关文章

随机推荐

  • 使用反射获取 linq 查询中的选择字段

    我正在使用 Linq 进行查询 并且希望能够使用反射在 选择 部分中获取我想要返回的属性列表 我已尝试以下方法但无济于事 string paramList new AppId Name var query from entity in ct
  • 自定义表格视图背景的 UITableViewCell 颜色问题

    我有一个 UITableView 其自定义背景图像设置如下 self tableView backgroundColor UIColor colorWithPatternImage UIImage imageNamed mybg png 背
  • DataInputStream/DataOutputStream类与InputStream/OutputStream类之间的区别

    每当我使用HttpConnection班级于Java ME Android or in BlackBerry 我用DataInputStream DataOutputStream用于通过远程服务器读取和写入数据的类 然而还有其他类 例如In
  • Get-EventLog - 轻松按“今天”过滤?

    我想快速检查今天发生的事件 即 从午夜开始的任何事件 Powershell 中是否有 今天 别名 内置功能可以帮助解决此问题 我目前正在做这样的事情 get eventlog system source disk after datetim
  • 拒绝类,因为它未通过编译时验证

    我正在尝试将来自 openwhispersystems 的 curve25519 java 集成到我的 Android 应用程序中 并使用 API 23 Marshmallow 进行编译 使用非本机代码时 我收到此运行时异常 java la
  • 我应该更改什么才能使该文件编译?

    我正在上编程课 这个程序是我作业的一部分 该文件分析名为 Names txt 的文件中的数据 然后打印信息 我收到编译错误 我想知道需要更改或添加哪些内容才能成功编译 这是我的代码 import java util Scanner impo
  • 更改 ImageView 内容会导致 OutOfMemoryError

    我有一个非常简单的应用程序 包含一个 ImageView 和一个 Button 我加载的第一个 Drawable 资源图像视图在 XML 布局中用 android src 标签指定 但是在运行时我想改变它显示的图片 为此 我启动一个活动以从
  • 压缩 (zip) 无法创建输出文件 - 错误

    我正在使用 VBscript 扫描文件夹 创建 zip 文件并向其中添加文件 压缩 但是当我在包含大量文件的文件夹上运行脚本时 出现以下错误 压缩 zip 无法创建输出文件 我的邮政编码处理代码如下 Dim objFSO Set objFS
  • 如何在视图刀片 Laravel 5.3 中显示空间?

    我在数据库中的记录是这样的 我想用空格显示 我尝试这样 nl2br text and nl2br e text 这是行不通的 我该如何解决 你尝试过使用 nbsp 在这里你可以使用 HTML 实体
  • 使用 @font-face 时,SVG 文本边框因浏览器而异?

    我试图通过使用 getBBox 方法获取边界框来根据文本的宽度和高度放置 SVG 文本元素 如果文本使用网络安全字体 则在不同浏览器中效果相当好 但如果使用 font face 和自定义网络字体设置文本样式 则在 Firefox Mac 和
  • JavaScript:推入对象内的数组?

    问题 如何将一个数组推入对象内的另一个数组 示例编码 var myObj arrayOne arrayTwo var arrayLetters A B obj arrayOne push arrayLetters RESULT arrayO
  • 在 JTable 中的单元格上方显示工具提示

    当用户在单元格中输入错误的值时 我需要在单元格上方 或下方 显示工具提示 参见下图 我有一个工具提示 但我需要一个点来将其显示在正确的位置 所以我想获取一个单元格位置 你知道如何得到这个吗 但是 如果您有更好的解决方案来实现这种行为 我愿意
  • Keras 拟合在第一个 epoch 结束时冻结

    我目前正在尝试使用 Keras 微调 VGG16 网络 我开始对猫和狗的数据集进行一些调整 然而 在当前的配置下 训练似乎在第一个时期被阻止 from keras import applications from keras preproc
  • 编译器 vs 解释器 vs 转译器

    在我参加的 ReactJS 会议中 演讲者使用了一个术语转译器对于一些代码转换 移植的发生 过去 我听说过编译器和解释器这两个术语 我在将用户编写的语言代码转换为计算机系统上可运行的形式的上下文中使用过 转译器对我来说是新的 转译器与编译器
  • SolrJ 和自动提交

    我正在使用 SolrJ API 将文档添加到 Solr 4 3 核心 我注意到我在我使用的库存 solrconfig 中将自动提交设置为 15 秒 如下所示
  • Rails - 通过 Active Storage 上传文件后在视图中显示图像

    我有一个正在进行中的项目5 1 2我正在尝试在其上实现活动存储 按照几个在线教程 我可以设置活动存储 并且可以看到保存在其中的数据active storage blobs and active storage attachments tab
  • 类型系列扩展无法按描述工作

    On 类型族的 Haskell wiki 页面 http www haskell org haskellwiki GHC Type families 有以下示例列表 type family F a type instance F Int I
  • git hook 获取合法提交消息(#123 好消息)

    我需要确保提交消息是合法的 否则拒绝它 提交消息应该类似于 123修复丢失的括号 我想确保它以哈希开头 有一个整数 没有 123a 并且消息至少有 10 个单词 很高兴有 消息不会连续完全相同 我正在使用这个 Trac 插件进行更改集 它更
  • 从传入 ASPX url 路由到 ASP.NET MVC 控制器操作

    我有一个 url Review aspx reviewId 3 我希望将此 url 路由到 MVC 控制器 操作 Review 3 有任何想法吗 没关系 像这样的简单路线是有效的 routes MapRoute Reviews Old Ro
  • Tcl 扩展:扩展的 ClientData 的生命周期

    重要的本机扩展将需要每个解释器的数据 动态分配的结构 我目前正在使用Tcl SetAssocData 有一个对应的密钥 扩展名和适当的删除例程 以防止此内存泄漏 然而 Tcl PkgProvideEx 也允许记录这样的 信息 该信息可以通过