在主线程上运行代码?

诺蒂达特

我知道可以js-ctypes在主线程之外运行,因此可以通过使用来执行异步操作ChromeWorkerChromeWorker不能使用XPCOM。

所以我想知道是否有办法在主线程上运行其他同步内容?

我希望将其用于nsIZipWriternsIToolkitProfileService :: Lock / Unlock`等。

nmaier

在Javascript中,运行主线程代码的唯一方法是WebWorker/ ChromeWorker,它实际上没有XPCOM访问权限。

实际上,过去曾经有一种从工作人员使用XPCOM的方法,当它再次被删除时,我最初很不高兴,但是现在我意识到这是正确的做法:XPCOM的很多(大多数?)不是线程安全的,甚至在使用看来是XPCOM类的自包含实例的情况下也是如此,因为最终,许多事情最终都将某些非线程安全的服务作为其实现的一部分进行了调用。这导致数据和/或内存损坏以及最终崩溃和数据丢失。这里的问题是/它并不总是破坏内存,因为不总是存在数据争用,而是在运行代码的每X次操作中造成破坏。人们通常习惯于开发和测试他们的东西,它碰巧可以工作,或者至少看起来像它可以工作,但是一旦有更多的人(又名用户)开始执行代码,崩溃就开始堆积起来。

可以在C ++代码中在主线程外运行代码,但是它具有相同的问题,很多XPCOM都不是线程安全的,因此您需要谨慎选择在不同线程中运行的内容,即仅访问被显式标记为线程安全的内容,但是即使使用此类标记,也可能存在线程安全错误。

因此,您不能在JS的另一个线程中使用XPCOM(除非有专门的组件为您执行此操作,例如nsIAsyncStreamCopier),即使在C ++的另一个线程中运行XPCOM也需要大量的知识,技能和时间来调试,如果在崩溃之后出现崩溃所有。

如果您确实愿意,那么可以在JS中轻松实现诸如zip-writer之类的事情,并在Worker中运行。例如,zip格式并不是特别难于实现,尤其是在您不需要实际压缩的情况下,并且OS.File允许您最方便地从工作人员执行文件I / O。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在主线程上运行代码?

来自分类Dev

ObserveOn与修改代码以在主线程上运行

来自分类Dev

在本机线程上在主线程上运行快速代码

来自分类Dev

为什么我的代码在主线程上运行?

来自分类Dev

哪些代码将在浏览器的主线程上运行?

来自分类Dev

为什么我的代码在主线程上运行?

来自分类Dev

另一个线程的代码如何在主线程上运行?

来自分类Dev

阻止当前线程,直到部分代码在iOS中的主线程上运行

来自分类Dev

在主线程上运行回调

来自分类Dev

如何从任务在主线程上运行语句

来自分类Dev

在仅限服务的应用程序中使用SpeechRecognizer。在主线程上运行代码

来自分类Dev

如何使用CoreData在主线程上仅运行HUD和同步代码块?

来自分类Dev

在仅限服务的应用程序中使用SpeechRecognizer。在主线程上运行代码

来自分类Dev

为什么WWDC对话建议在主线程上运行非UIKit代码以修复数据争用?

来自分类Dev

运行从主线程使用方法的单独线程是否仍会在主线程上运行它?(C#)

来自分类Dev

运行从主线程使用方法的单独线程是否仍会在主线程上运行它?(C#)

来自分类Dev

“仅在主线程上运行”例外是仅模拟器

来自分类Dev

为什么我的NSOperationQueue在主线程上运行?

来自分类Dev

为什么UIWebView的AVPlayerViewController不在主线程上运行?

来自分类Dev

在主线程上运行NSURLSession完成处理程序

来自分类Dev

为什么CompletableFuture的thenAccept()无法在主线程上运行

来自分类Dev

'NSInternalInconsistencyException',原因:“仅在主线程上运行!” 错误

来自分类Dev

为什么我的NSOperationQueue在主线程上运行?

来自分类Dev

NSURLSession dataTaskWithRequest完成块是否始终在主线程上运行?

来自分类Dev

为什么UIWebView的AVPlayerViewController不在主线程上运行?

来自分类Dev

在阻止后台线程的同时在后台线程的主线程中运行代码

来自分类Dev

在阻止后台线程的同时在后台线程的主线程中运行代码

来自分类Dev

事件线程和主线程的代码结构

来自分类Dev

Android服务的方法在不同的线程中调用。它仍然在主线程上运行吗?

Related 相关文章

  1. 1

    在主线程上运行代码?

  2. 2

    ObserveOn与修改代码以在主线程上运行

  3. 3

    在本机线程上在主线程上运行快速代码

  4. 4

    为什么我的代码在主线程上运行?

  5. 5

    哪些代码将在浏览器的主线程上运行?

  6. 6

    为什么我的代码在主线程上运行?

  7. 7

    另一个线程的代码如何在主线程上运行?

  8. 8

    阻止当前线程,直到部分代码在iOS中的主线程上运行

  9. 9

    在主线程上运行回调

  10. 10

    如何从任务在主线程上运行语句

  11. 11

    在仅限服务的应用程序中使用SpeechRecognizer。在主线程上运行代码

  12. 12

    如何使用CoreData在主线程上仅运行HUD和同步代码块?

  13. 13

    在仅限服务的应用程序中使用SpeechRecognizer。在主线程上运行代码

  14. 14

    为什么WWDC对话建议在主线程上运行非UIKit代码以修复数据争用?

  15. 15

    运行从主线程使用方法的单独线程是否仍会在主线程上运行它?(C#)

  16. 16

    运行从主线程使用方法的单独线程是否仍会在主线程上运行它?(C#)

  17. 17

    “仅在主线程上运行”例外是仅模拟器

  18. 18

    为什么我的NSOperationQueue在主线程上运行?

  19. 19

    为什么UIWebView的AVPlayerViewController不在主线程上运行?

  20. 20

    在主线程上运行NSURLSession完成处理程序

  21. 21

    为什么CompletableFuture的thenAccept()无法在主线程上运行

  22. 22

    'NSInternalInconsistencyException',原因:“仅在主线程上运行!” 错误

  23. 23

    为什么我的NSOperationQueue在主线程上运行?

  24. 24

    NSURLSession dataTaskWithRequest完成块是否始终在主线程上运行?

  25. 25

    为什么UIWebView的AVPlayerViewController不在主线程上运行?

  26. 26

    在阻止后台线程的同时在后台线程的主线程中运行代码

  27. 27

    在阻止后台线程的同时在后台线程的主线程中运行代码

  28. 28

    事件线程和主线程的代码结构

  29. 29

    Android服务的方法在不同的线程中调用。它仍然在主线程上运行吗?

热门标签

归档