- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我将使用“Process”来指代将要并行发生的工作,使用“enqueue”来指代将用于启动该进程的任何进程(无论是 Task.Run、ThreadPool。 QUWI,new Thread() ... 随便什么)。
我们有一个性能敏感的程序,它产生多个并行进程来收集数据。
我们在生成方面遇到了问题,进程没有立即开始。
具体来说,如果我们准备一个进程,启动一个计时器,将进程排入队列,并将计时器作为进程中的第一个 Action 进行检查......然后我们会看到时间延迟偶尔会延长到 100 毫秒甚至 1000 毫秒.
鉴于进程本身应该只运行 3-10 秒,因此在进程排队和激活之间有 2 秒的延迟是一个主要问题。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
目前我们的实现开始使用 TP.QUWI,然后我们转向使用 Task.Run。我们的初步调查将我们引向 Threadpool 使用的 Thread-Creation-Strategy 和 ThreadPool.SetMinThreads(),因此我们从这个角度出发,看看是否能完全解决问题。
但是,如果我们的目标是让进程在入队后立即启动,我们是否应该考虑另一种变化/方法?
最佳答案
Taken from here (我强烈建议您仔细阅读):
似乎你想要的东西可以通过覆盖默认任务调度程序来实现......吓人......
You can't assume that all parallel tasks will immediately run. Depending on the current work load and system configuration, tasks might be scheduled to run one after another, or they might run at the same time. For more information about how tasks are scheduled, see the section, "The Default Task Scheduler," later in this chapter.
使用自定义计划创建任务
您可以通过覆盖任务工厂方法使用的默认任务调度程序,自定义 .NET 中任务调度和运行方式的详细信息。例如,您可以提供自定义任务计划程序作为 TaskFactory.StartNew 方法的重载版本之一的参数。
在某些情况下,您可能希望覆盖默认调度程序。最常见的情况发生在您希望您的任务在特定线程上下文中运行时... 其他情况发生在默认任务调度程序的负载平衡试探法不适用于您的应用程序时。有关详细信息,请参阅本章后面的“线程注入(inject)”部分。
除非您另外指定,否则任何新任务都将使用当前任务调度程序...
您可以实现自己的任务调度程序类。有关详细信息,请参阅本章后面的“编写自定义任务计划程序”部分。
线程注入(inject)
.NET 线程池自动管理池中工作线程的数量...
阅读 this SO post "replacing the task scheduler in c sharp with a custom built one "
关于c# - 保证并行线程/任务/任何东西的立即启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37164570/
这个fn是吗: function isplainobj ( obj ) { return Object.prototype.toString.call( obj ) === "[object
我尝试创建一个我没有经验的小 bash 脚本。我尝试做类似的事情: #!/bin/bash statut="na" if [ $proc = 0 ]; then statut = "close
我想重写 HighLine 的几个方法来自定义我的控制台,目前我的代码如下所示: cmd = ask("#{@prompt_label} #{@prompt_separator} ",
鉴于下面的 HTML,我尝试使用 jQuery 来匹配所有具有类“foo”的跨度的列表项,并且该跨度应包含文本“relevant”。 Some text relevant Some more
我拥有一个 5 美元 20GB SSD Digital Ocean Droplet,它几乎用完了 Docker 镜像和容器的空间。 有没有办法购买一个卷,将其连接到服务器并安全地将所有 Docker
我有这样的表: id name number result stuff stuff stuff stuff 我只想将 class = "red" 添加到
我需要计算两点之间的距离,但不是以常规方式。我需要知道“东西距离”+“南北距离”。我想这比常规的“乌鸦飞翔”计算更简单,但我仍然不知道如何做到这一点。 我想使用 MySQL 查询来执行此操作,并且最好
#include #include #include typedef struct dict_pair { void *key; void *value; struct dict_p
为什么当我尝试通过 将 char[] word 写入控制台时会发生这种奇怪的事情 Console.WriteLine(word); 我得到了一个正确的结果,但是当我写的时候 Console.Write
一个简单的例子: class C{} class B{ @Inject C c; void doSomething(){ System.out.println(c);
我想做某事,但不确定如何描述它。我有这门课 public class Company { private List _persons; private Person GetPersonByNa
我正在尝试实现我自己的 qDebug()样式调试输出流,这基本上是我目前所拥有的: struct debug { #if defined(DEBUG) template std::os
所以我正在为我的应用程序编写一个搜索功能,代码如下: - (void) selectObject: (NSString *)notes{ [axKnotes removeAllObjects]
我想在 Rust 中匹配一种复杂的继承式东西: struct Entity { pub kind: EntityKind, } pub enum EntityKind { Player
我是 SQL 新手。这没有返回任何结果...... SELECT media.id as mediaid, media.title as mediatitle, media.description
在微型 SDCard 上写入 Android things 图像并将该卡插入 Raspberry Pi 3 Model B 并打开电源,启动时显示“Auto config Please wait”然后
这是一个常见的但是文本出现在框的右侧,不是极右但几乎是这样 h3: ................................................ .................
#include #include #include #include #include int main(int argc, string argv[]) { if(argc >
所以我试图让一些东西相互堆叠。首先,查看工作链接会有所帮助,您会看到问题所在: http://brownbox.net.au/clients/matchlessphotography/ 现在我需要使用
我想在禁用 javascript 时在我的网站顶部显示一条消息(就像在 SO 上一样),但在谷歌浏览器上不起作用 最佳答案 看起来是这样。 您可以使用 javascript 隐藏“noscript”消
我是一名优秀的程序员,十分优秀!