- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的高频交易应用程序中,我有几个地方可以从网络接收数据。在大多数情况下,这只是一个只接收和处理数据的线程。以下是此类处理的一部分:
public Reciver(IPAddress mcastGroup, int mcastPort, IPAddress ipSource)
{
thread = new Thread(ReceiveData);
s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
s.ReceiveBufferSize = ReceiveBufferSize;
var ipPort = new IPEndPoint(LISTEN_INTERFACE/* IPAddress.Any*/, mcastPort);
s.Bind(ipPort);
option = new byte[12];
Buffer.BlockCopy(mcastGroup.GetAddressBytes(), 0, option, 0, 4);
Buffer.BlockCopy(ipSource.GetAddressBytes(), 0, option, 4, 4);
Buffer.BlockCopy(/*IPAddress.Any.GetAddressBytes()*/LISTEN_INTERFACE.GetAddressBytes(), 0, option, 8, 4);
}
public void ReceiveData()
{
byte[] byteIn = new byte[4096];
while (needReceive)
{
if (IsConnected)
{
int count = 0;
try
{
count = s.Receive(byteIn);
}
catch (Exception e6)
{
Console.WriteLine(e6.Message);
Log.Push(LogItemType.Error, e6.Message);
return;
}
if (count > 0)
{
OnNewMessage(new NewMessageEventArgs(byteIn, count));
}
}
}
}
这个线程一旦创建就永远有效。我只是想知道是否应该将此线程配置为在某个核心上运行?因为我需要最低延迟,所以我想避免上下文切换。因为我想避免上下文切换,所以我最好在同一个处理器内核上运行同一个线程,对吧?
考虑到我需要最低延迟是正确的:
如果这很重要,我现在将上面的代码重写为 c++,以便稍后移植到 Linux,但是我认为我的问题更多是关于硬件而不是语言或操作系统。
最佳答案
我认为尽可能少延迟的算法是将您的线程固定到一个核心并将它们设置为实时优先级(或任何最高优先级)。
这将导致操作系统驱逐碰巧使用该核心的任何其他线程。
希望当您的线程被调度到 CPU 缓存时,CPU 缓存仍将包含有用的数据。出于这个原因,我喜欢固定到核心的想法。
您可能应该将整个过程设置为高优先级,并尽量减少盒子上的其他事件。还要关闭未使用的硬件,因为它可能会产生中断。将 NIC 的中断修复到不同的 CPU 核心(一些更好的 NIC 可以做到这一点)。
关于c# - 我应该对 "latency-critical"线程使用线程关联吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15295438/
这基本上是 the code I am using灯塔说我的(几乎是空的!)css 包延迟了我的初始加载。 那么我如何在 中放置指向 critical.scss 的链接 DONT_WANT_TO_WR
这实际上是三个不同的概念还是我混淆了? (我一直在阅读有关线程和垃圾收集的文章,但我自己也很困惑。) “关键部分” - 我认为这可能只是您不希望多个线程同时访问的代码部分的术语,即在 lock 和 M
好吧,过去一天我一直在绞尽脑汁试图解决这个问题。我正在尝试为目录中的每个 HTML 文件生成关键 CSS。我当前的工作代码在单个文件上运行良好: export const criticalCSS =
我是 Java 多线程的新手,遇到过以下问题: 问题:线程 1 到 n 执行一个名为 critical() 的方法。在此之前,他们执行一个名为 uncritical() 的方法。它们的同步约束是一次只
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
CRITICAL_SECTION 和 CCriticalSection 之间有什么关系。CCriticalSection 是 CRITICAL_SECTION 的包装器吗? 顺便说一句: 我认为下面的
我正在尝试使用 openMP,并且我有一个永远不能同时运行两次的功能。在另一个世界中,这不是问题: int foo(void){ mutex->lock(); .... mutex->relea
我有多个项目的并行构建,每个项目在某个时间点都会调用 任务。此 exec 任务正在运行 3pty 工具,如果此工具的另一个实例正在运行,该工具会崩溃。有没有一些本地方法如何在 msbuild 中实现“
换句话说:你写了什么代码 不能 失败。我很想听听那些从事过心脏监测器、水测试、经济基本面、导弹轨迹或航天飞机上的 O2 浓度的项目的人的意见。 你是如何准备编写这种代码的:方法论、智力和情感? 编辑
所以我最近开始使用 Perl::Critic 来检查我编写的代码的质量。我正在以残酷的模式运行它,并且它提出了一个我不认为是问题的建议。输出是: 标记函数的返回值被忽略 - 在第 197 行第 13
我已经开始将一个项目转换为 Moose,我注意到的第一件事是我的批评/整洁测试陷入困境。 Moose、Tidy 和 Critic 似乎不像以前那么喜欢彼此了。 是否有任何关于如何让评论家/整洁者更欣赏
案例一: 场景:我有两种不同的方法,每种方法都共享通用的全局资源。 Method1() 被 ThreadA 访问,Method2() 被许多其他线程访问,但不是 ThreadA。 要求 :我的要求是如
我正在尝试使用 Keras 和 Tensorflow 实现 Actor-Critic。但是,它永远不会收敛,我不明白为什么。我降低了学习率,但它没有改变。 代码在python3.5.1和tensorf
一旦我们的软件投入使用,“关键”机器信息将被记录并用于调试目的。 “关键”信息可能包括对调试应用程序“通常”很重要的数据。它可能包括: 操作系统 已安装 Windows 更新 硬件信息:CPU、内存、
我正在编写一个小型数据库接口(interface)并想使用 glayout。 MWE: require(gWidgets) options("guiToolkit"="RGtk2") ### Th
考虑以下代码 //proces i: //proces j: flag[i] = true;
我在另一个线程(由 threading.Thread 创建)中运行一个单独的类方法。我想检查用户是否登录成功。 如果用户没有登录,我想提示一个消息框 QtWidgets.QMessageBox.cri
我在线程 A 中有以下代码,它使用 pthread_cond_wait() 阻塞 pthread_mutex_lock(&my_lock); if ( false == testConditi
我正在寻找对“关键渲染路径”含义的简明解释,特别是关于它与 Web 开发的关系。 最佳答案 The critical rendering path is the series of events th
每当我的独立线程在特定的 .txt 文件中遇到单词“alert1”时,我想显示一条错误消息。但是我在 mythread.cpp 文件中的 monitorForAlerts() 中得到了上述错误。如果我
我是一名优秀的程序员,十分优秀!