【问题标题】:Which operations in the Sublime Text 2 API are thread-safe?Sublime Text 2 API 中的哪些操作是线程安全的?
【发布时间】:2015-04-30 19:00:44
【问题描述】:

在 Sublime Text 3 API 中,all operations are threadsafe

线程

所有 API 函数都是线程安全的 ...

但在 Sublime Text 2 API 中,情况并非如此。正如我 personally learned to my displeasure 所言,某些操作在从主线程以外的线程调用时会以不可预测且依赖于操作系统的方式失败并带有消息

RuntimeError: 必须在主线程上调用,考虑使用 sublime.set_timeout(function, timeout)

我可以在 Sublime Text 2 文档(强调我的)中找到一个关于线程安全的保证:

set_timeout(回调,延迟)

在给定延迟(以毫秒为单位)后调用给定回调。具有相同延迟的回调将按照添加的顺序运行。 从多个线程调用 setTimeout 是安全的。

但是将所有内容都包含在 set_timeout 调用中是乏味且难以理解的。如果我的目标是支持 Sublime Text 2,或者是大量使用 set_timeout 的唯一方法,我可以从主线程之外安全地使用任何其他 API 方法吗?

【问题讨论】:

    标签: multithreading sublimetext2 sublimetext python-multithreading sublime-text-plugin


    【解决方案1】:

    根据Sublime Text 3 porting guide,Sublime Text 2 中唯一的线程安全方法是set_timeout

    在 Sublime Text 2 中,只有 set_timeout 方法是线程安全的。在 Sublime Text 3,每个 API 方法都是线程安全的。

    【讨论】:

      猜你喜欢
      • 2012-04-18
      • 2011-01-11
      • 1970-01-01
      • 2014-06-05
      • 2011-08-28
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 2023-04-02
      相关资源
      最近更新 更多