问题标签 [multiple-processes]
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.
macos - OSX 多进程应用程序
我正在为 OS X 制作一个网络客户端应用程序。UI 的一部分——我们称之为前端——启动网络会话,然后是网络会话本身。
我希望应用程序将会话生成到单独的进程中。换句话说,应用程序将有一个前端进程,然后是 0..N 个会话进程。前端进程将有一个完整的 Cocoa UI(NSWindow+menubar 等),但每个会话也是如此。一旦启动,会话将大部分独立于前端 - 几乎不需要进程间通信。
这是棘手的一点 - 我不希望这看起来是多个应用程序。我希望使用单个 Dock 磁贴控制主要的前端进程以及所有会话进程(即单击 Dock 磁贴,所有应用程序窗口都以 z 顺序出现,根据 OS X 标准行为) ,我希望应用程序菜单中的应用程序名称相同,并且我希望 Dock 磁贴具有对应于所有会话窗口的窗口列表(由单独的进程运行)。
这一定是可能的——Chrome 做了一些非常相似的事情。有没有人大致了解他们认为我可以如何做到这一点?
更新:仔细查看后,我现在认为这实际上不可能以任何干净的方式进行。尤其是 Chrome,它在单个父进程中创建其所有 NSWindows,然后只是从帮助进程中编组页面呈现。如果没有其他人可以添加任何内容,我会在几天内将此标记为“已回答”。
multithreading - GTK+ 中的重绘问题
我调用了一个打开“模态”窗口的外部程序,因为它与主循环在同一个线程中,它阻止了底层窗口的重绘。
该程序作为一个单独的进程运行,我通过管道与该程序通信。
从我读过的内容来看,有一个额外的主循环是不好的做法,那么避免这种锁定的正确方法是什么?
问题是如何在我自己的程序中创建一个单独的线程来与该程序进行通信而不阻塞整个主循环。
python - Werkzeug 和 Flask 的类状态:当类没有被重新初始化时,类成员变量如何重置?
我正在尝试编写一个烧瓶扩展,它需要在请求之间保留一些信息。当我使用单个进程运行 Werkzeug 时,这可以正常工作,但是当我使用多个进程运行时,我会遇到一些我不理解的奇怪行为。以这个简单的应用为例:
对于前两种情况,它的行为完全符合我的预期:Counter 对象被初始化一次,然后随着对“/”路由的每个请求而递增。当我使用第三个场景(传递进程=2)运行它时,我得到这个作为输出:
似乎 counter.value 在初始化后立即返回到它的状态,而实际上没有重新初始化。有人能解释一下 Werkzeug 在内部为实现这一目标所做的工作吗?我也非常有兴趣了解是否有一种方法可以使其行为符合我的天真期望(两个进程,每个进程都有自己的 Counter 实例)。谢谢!
python - 无法在多个进程中运行:IOLoop 实例已被初始化。在调用 start_processes() 之前不能调用 IOLoop.instance()
我正在尝试在 Tornado 中运行多个进程,并尝试了在此线程上提出的建议:运行多个龙卷风进程
但是我的错误并没有消失。这是服务器文件。
服务器.py
我已经基于预期它可能会触发实例并且我根本没有连接到数据库而注释掉了“连接”导入。这只是试图让服务器启动。
这是整个跟踪:
任何建议都非常感谢!谢谢!
communication - 拜占庭将军:错误进程的数量
我正在阅读 Lamport 关于拜占庭将军问题的论文,我想问以下问题:为了算法工作,我是否总是需要知道错误进程的数量?例如,如果我有一个无法知道有多少进程可能会生成错误消息的网络,我不能使用 Lamport 的解决方案(口头消息或签名消息)吗?
谢谢 !!
vhdl - VHDL 多进程错误
我正在写一个 VHDL 作业,它会产生一个奇怪的行为,我不明白。
概念如下。应该有一个 LFSR 用于生成随机数。LFSR 可以由 I_CLK 或 I_NEXT 输入驱动。如果 LFSR 由 I_CLK 驱动,它应该在其输出上自动生成随机数,但如果它由 I_NEXT 输入驱动,它应该通过手动将 I_NEXT 值从 0 更改为 1 来生成数字。我有以下问题代码。如果我注释掉其中一个进程,LFSR 可以正常工作,但如果启用了所有进程,它就根本不起作用。你能帮我找出问题所在吗?我认为这应该是设计错误,但我不知道我的设计有什么问题。
代码测试台:
python - 使用多处理来利用 CPU 的所有内核
我正在尝试计算我的 CPU 每秒可以执行的浮点操作数,所以我编写了以下程序:
该程序计算执行“n”次浮点运算所需的时间(execTime),“n / execTime”为我提供了我想要的 FLOPS 值。
但是,随着进程数量的增加,FLOPS 值会降低。我期望它会减少,因为这些进程每秒执行更多的操作,因为它们是并行运行的。我究竟做错了什么??
android - 在多进程 Android 应用程序中注入依赖项
TLDR:我正在开发一个在多个进程中运行的应用程序。出于 UI 测试的目的,我想注入一个虚假的 API 依赖项,以使应用程序在测试下运行独立于网络交互,但是,这在多进程设置中似乎不起作用。
我正在使用这篇文章中描述的方法,所以我实现了一个自定义AndroidJUnitRunner
实例,它使用模拟依赖项(让它成为MockApplication
)而不是具有真正依赖关系的应用程序(让它成为)实例化应用程序RealApplication
。它确实有效,我的应用程序从主进程查询假 API 接口。
然而,我的应用程序使用多个进程,例如,有一个数据处理Service
在其自己的进程中运行,并且仅在startService
从应用程序代码调用时开始。出于某种原因,此过程使用 的实例运行RealApplication
,没有任何模拟依赖项。
有什么办法可以让它工作吗?我尝试深入研究负责应用程序实例化的 Android 代码,但还没有真正发现任何特别有用的东西。
PS 我正在使用 Dagger 2 进行 DI,但这可能并不真正相关。
c++ - 了解使用信号量和共享内存的 unix 子进程
我将尽我所能在我所拥有的理解下提出这个问题。
我正在做一个编程任务(现在让我们把它搞定),它在 Unix 服务器上使用 C 或 C++ 来分叉四个孩子,并使用信号量和共享内存来更新全局变量。我不确定我是否有问题,但我缺乏理解让我质疑我的结构。这里是:
只是我在做什么的一些信息(我认为),我正在创建一个包含一个变量的共享内存块,让我们称之为它将由父级counter
严格更新,adder
在所有子进程之后成为减法器是活跃的。我仍在尝试找出我将使用的信号量内容,以便加法器和减法器在关键部分执行,但我的主要问题是这个。
我怎么知道我在这个结构中的位置?我的加法器应该有一个循环来完成一些工作(更新全局变量),并且父/减法器应该有一个循环来完成它的工作(也更新全局变量)。并且readers
可以随时查看。父/减法器的循环放置是否重要?我基本上有 3 个地点,我知道我会在父母那里。但是由于所有孩子都需要首先创建,所以它必须在我知道我在父母中的第三次分叉之后的最后一个条件中吗?当我使用我的测试方法时,我得到分散的输出,这意味着孩子一可以在父母的输出之后,然后是孩子三,等等。它从来没有任何顺序,根据我对 fork 的理解,这是预期的。
我真的有三个问题要问,但我需要先了解一下这个结构。所以让我试着简洁地说一遍,没有任何垃圾,因为我挂在循环和关键部分的位置上,甚至还没有写出来。
更直接地说,父母什么时候知道所有孩子的存在,并且通过这种结构,一个孩子可以做一个任务并以某种方式回到它(即加法器/第一个孩子添加到全局变量一次,退出,并且其他一些孩子可以做它的事情ETC)。
我仍然觉得我没有问正确的事情,我相信这是由于仍在尝试掌握概念。希望我的口吃能说明我在概念上的坚持。如果不是我可以澄清。
c - 多个进程访问的共享内存上的 C 互斥锁
我有两个正在运行的进程,一个将从共享内存(mmap)读取,一个将写入共享内存(mmap)。这些进程在两个不同的终端中分别启动,但它们需要同步,以便在一个进程正在写入时,它会在另一个进程从内存中读取之前写入全部量。我看到的所有与共享内存互斥锁相关的帖子都是从单个主程序产生线程/进程。有没有办法创建一个可以被两个独立程序使用的共享互斥锁?