问题标签 [green-threads]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
5762 浏览

ruby-on-rails - Using Thread.new to send email on rails

I've been sending emails on my application (ruby 1.8.7, rails 2.3.2) like this Thread.new{UserMailer.deliver_signup_notification(user)}

Since ruby use green threads, there's any performance advantage doing this, or I can just use UserMailer.deliver_signup_notification(user) ?

Thanks

0 投票
9 回答
9451 浏览

multithreading - 哪些脚本语言支持多核编程?

我编写了一个小 Python 应用程序,在这里您可以看到任务管理器在典型运行期间的外观。 (来源:weinzierl.name

虽然该应用程序完全是多线程的,但不出所料,它只使用一个 CPU 内核。尽管大多数现代脚本语言都支持多线程,但脚本只能在一个 CPU 内核上运行

Ruby、Python、Lua、PHP 都只能在单核上运行。甚至据说对并发编程特别擅长的 Erlang 也受到了影响。

是否有一种脚本语言内置了对不限于单个内核的线程的支持?

包起来

答案并不完全符合我的预期,但答案TCL接近。我想补充一下perl,它(很像TCL)有基于解释器的线程。

Jython、IronPythonGroovy属于将一种经过验证的语言与另一种语言的经过验证的虚拟机相结合的范畴。感谢您在这个方向上的提示。

我选择Aiden Bell 的答案作为Accepted Answer。他没有建议一种特定的语言,但他的评论对我来说是最有见地的。

0 投票
1 回答
18977 浏览

python - Tkinter 在加载图标并且 tk.mainloop 在线程中时锁定 Python

这是测试用例...

此代码有效。取消注释 t.iconbitmap 行并锁定。以您喜欢的方式重新安排它;它会锁定。

当存在图标时,如何防止 tk.mainloop 锁定GIL ?

目标是 win32 和 Python 2.6.2。

0 投票
4 回答
3054 浏览

multithreading - 在 Haskell 中创建 100 万个线程需要多长时间?

据我了解,Haskell 有绿色线程。但是它们的重量是多么的轻。是否可以创建 100 万个线程?

或者 100 000 个线程需要多长时间?

0 投票
4 回答
829 浏览

architecture - 除了 Erlang,还有哪些基于“绿色进程”的系统?

我正在阅读Green Thread(维基百科)上的这个信息页面,我想知道:除了 Erlang 之外,还有哪些其他编程系统依赖于“绿色进程”?

编辑:“绿色线程!=绿色进程”

基于绿色工艺

  • 二郎
  • 地狱火

基于绿线

基于本机进程

  • C、C++

更新:没有人直接回答这个问题,因此我接受了一个答案,该答案为我提供了有关一般绿色流程的更多信息。

0 投票
3 回答
2643 浏览

multithreading - “绿色线程”和 Erlang 的进程有什么区别?

在阅读了 Erlang 的轻量级进程后,我非常确定它们是“绿色线程”。直到我读到绿色线程和 Erlang 的进程之间存在差异。但我不明白。

实际的区别是什么?

0 投票
5 回答
5220 浏览

java - 组合两个 Runnable 对象

例如,假设我有一个名为 RunnableA 的 Runnable,它可以做一些事情。我还有一个名为 RunnableB 的 Runnable,它可以做其他事情。有没有办法可以将这两个 Runnable 组合起来,以便它们在同一个线程中运行?

问题的第二部分是如果这是可能的,那么我可以指定它们运行的​​顺序吗?

编辑!:我想这样做的原因是因为我需要在 EDT 上运行代码,但其他一些代码需要在另一个线程上运行。请看下面的代码。

像这样的东西

抱歉,如果没有很好地解释,如果您需要澄清,请发表评论。

谢谢!

0 投票
2 回答
869 浏览

multithreading - LoadRunner 是否使用本机或绿色 vuser 线程?

我为 Windows 版本的 LoadRunner 设置了 100 个虚拟用户,并启用了“将 vuser 作为线程运行”选项。

然后,我在(LoadRunner Controller 进程)上使用Process Explorer来查看当100 个 vuser 运行时该进程的指标是否增加了……如果 LR 使用线程池,则增加了 100 或 100-k。wlrun.exeThreads

线程数似乎根本没有增加!

因此,我可以安全地得出 LoadRunner 使用绿色线程而不是本机线程的结论吗?

0 投票
1 回答
3044 浏览

multithreading - 究竟是什么让 Erlang 进程、绿色线程、协程比内核线程“更轻”?上下文切换很重怎么办?

可能重复:
从技术上讲,为什么 Erlang 中的进程比操作系统线程更高效?

每当提到 Erlang 进程或绿色线程或协程时,与内核线程相比,它们总是被描述为“轻量级”。通常给出的原因是内核线程涉及缓慢的上下文切换。

但是,缓慢的上下文切换到底是怎么回事?与在用户空间中切换绿色线程相比,它慢了多少?

上下文切换是导致事件驱动程序(如 Nignx)和多处理程序(如 Apache)之间性能和内存消耗差异的主要(唯一?)因素吗?

0 投票
6 回答
2850 浏览

c++ - c/c++ 可以在单个线程中进行抢占式多任务处理吗?

C/C++ 中的抢占式多任务:正在运行的线程可以被某个计时器中断并在任务之间切换吗?

许多使用绿色线程等的虚拟机和其他语言运行时都是以这些术语实现的;C/C++ 应用程序可以做同样的事情吗?

如果是这样,怎么做?

这将取决于平台,因此请根据特定平台对此的支持进行讨论;例如,如果您可以SIGALRM在 Linux 上的处理程序中执行一些魔法来交换某种内部堆栈(可能使用longjmp?),那就太好了!


我问是因为我很好奇。

我已经工作了几年来制作异步 IO 循环。在编写异步 IO 循环时,我必须非常小心,不要将昂贵的计算计算放入循环中,因为它会 DOS 循环。

因此,我对可以使异步 IO 循环恢复甚至完全支持某种绿色线程或此类方法的各种方式感兴趣。例如,对 a 中的活动任务和循环迭代次数进行采样SIGALRM,然后如果检测到任务被阻塞,则将其他所有内容移至新线程,或者对此进行一些巧妙的变体以获得所需的结果。

最近在这方面有一些关于 node.js 的抱怨,在其他地方我看到了关于其他运行时(如 Go 和Haskell )的诱人评论。但是,让我们不要离是否可以在 C/C++ 中的单个线程中进行抢占式多任务处理的基本问题太远