问题标签 [process]
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.
.net - 终结器线程的范围是什么 - 每个应用程序域或每个进程?
根据我所有的阅读,应该有一个 GC 线程来调用所有终结器。现在,问题是这个“一个”线程的范围是什么——每个进程或每个应用程序域,因为域的全部意图是在一个进程空间中分离并制作“独立”的不同应用程序。
我在这里读到:
如果在终结器中发生未处理的异常,CLR 的执行线程将吞下该异常,将终结器视为正常完成,将其从易碎队列中删除并移至下一个条目。
更严重的是,如果你的终结器由于某种原因没有退出会发生什么,例如它阻塞,等待一个永远不会发生的条件。在这种情况下,终结器线程将被挂起,因此不再有可终结的对象被垃圾收集。您应该非常了解这种情况,并坚持编写最简单的代码来释放终结器中的非托管资源。
另一个考虑因素是应用程序关闭期间会发生什么。当程序关闭时,垃圾收集器将努力调用所有可终结对象的终结器,但有一定的限制:
在关闭期间,可终结对象不会提升到更高的堆代。
任何单独的终结器将有最多 2 秒的时间来执行;如果需要更长的时间,它将被杀死。
所有终结器的执行时间最长为 40 秒;如果此时任何终结器仍在执行或未决,则整个过程会突然终止。
太多帖子(甚至官方文档)滥用术语“应用程序”、“进程”和“应用程序域”——其中大多数甚至假设它们是相等的,因为通常应用程序在单个进程中的单个应用程序域中运行. 这种滥用使所有这些文档都难以阅读,甚至没有用处。
因此,我的问题假设有多个应用程序,每个应用程序都在单个进程的单独应用程序域中运行。
所有这些应用程序是否共享相同的 GC 和终结器线程?上面文章中描述的问题(挂起终结器线程)会影响该进程中的所有应用程序吗?如果是 - 是否有解决方法(除了不使用不良应用程序),例如以某种方式发现终结器线程并将其发送 Thread.Abort?
以上都是因为我遇到了类似的问题。我的应用程序作为第三方软件 (Outlook) 的插件在单独的应用程序域中运行。由于各种原因,我需要调用 GC.Collect 和 GC.WaitForPendingFinalizers 来完全释放 COM 引用(通常的互操作例程对于 Office/Outlook 来说是不够的),当某个特定的其他第三方插件运行时,我的 GC.WaitForPendingFinalizers 永远挂起,所以我怀疑第三方添加中有一个“坏”的终结器。我无法控制替换/删除添加(客户的要求),所以我必须自己弄清楚如何使它们共存。
php - PHP fork 没有子继承父文件描述符?
我正在尝试使用反引号运算符运行 shell 命令,但子进程继承 php 的打开文件描述符这一事实是有问题的。有没有办法防止这种情况发生?
我正在运行 PHP 5.1.2
methods - 什么是 HOME 方法?
一位客户问我是否了解 HOME 开发方法。我与维基百科和 acronymfinder 一起,画了一个完整的空白。
这里有人听说过一种叫做 HOME 的开发方法吗?
synchronization - 如何同步两个进程?
我有一个硬件接口,我想在同一个工作站上的两个应用程序(进程)中使用。硬件需要一个初始化调用,然后任何一个应用程序都使用相同的函数(在同一个库中)与硬件进行许多事务。
所以每个应用程序都应该像这样:
我可以在两个应用程序之间共享的锁和引用计数调用中使用什么机制?我正在考虑命名管道,即 mkfifo()。
c++ - 单线程两个进程
我有两个 C++ 进程(A 和 B),在 Windows 下执行,一个启动另一个。我想有效地单线程执行它们。例如:
- 启动过程 A
- A创造B
- A 暂停
- B 执行一些固定的操作
- B暂停,A恢复
- A 执行一些固定的操作
- A暂停,B恢复
- (重复 4 - 7)
哪种 Windows 同步和 IPC 服务最适合实现此类行为?
process - 如何融合 CMMI 和 Scrum?
我在一家获得 CMMI 5 级认证的商店工作。该认证很重要,因为它使我们能够接触到某些客户和合同。我正在研究如何将 Scrum 与 CMMI 相结合。我找到了一些关于将 Scrum 与 CMMI-3 混合的信息,但其中相当一部分是“手摇的”,经不起严格的审查。具体来说,组织 KPA 似乎具有挑战性。
你有什么经验(好的和坏的)混合这两个过程?
c# - 访问被拒绝尝试在 Windows 用户临时文件夹中提取档案
我正在尝试对位于 Windows 用户临时目录 (C:\Documents and Settings\User\Local Settings\Temp ),在我的 c# 应用程序中使用 Process。
我认为由于“访问被拒绝”而发生的进程返回错误,因为当我挖掘 .NET 的进程对象时,我可以看到错误代码为 5 的 win32Exception。
在其他地方做同样的事情之前效果很好,所以我想这可能是我不应该做的事情?(运行一个进程以使用 %TEMP% 上的文件)也许我需要以某种方式通过安全性?
c# - pConsole.StartInfo.RedirectStandardOutput and pConsole.Exited event (c#)
I have a GUI application that executes (in a new process) "console" applications and parse the output. To redirect the Output i set the pConsole.StartInfo.RedirectStandardOutput to true. I also subscribes to the event pConsole.Exited.
The problem I see is that I have to use Thread.Sleep() in the Exited event handler to get the last data.
My Exited event handler looks like this:
It seems that the Exited event executes before my last pConsole_DataAvailableEvent. Anyone knows how/why this is happening?
I also use a mutex/lock to make sure my Exited event is finished before I start execute my next console application.
c# - 我怎么知道一个进程是否正在运行?
当我获得对 a 的引用时System.Diagnostics.Process
,我如何知道进程当前是否正在运行?
php - 调试挂起的php
我有一个偶尔挂起的 php web 应用程序。当我导航到该页面时,即使最大执行次数为 210,它也会坐在那里尝试加载数小时。这是一个应用程序在代理后面使用 curl 来下载内容。错误报告设置为全部,但这并不重要,因为页面是空白并挂起的。
我在调试挂起的 PHP 进程时找不到任何东西。