问题标签 [pipelining]

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 投票
0 回答
185 浏览

c# - 如何使用 C# 处理流水线请求?

我需要在我的 C# Mono(Linux 上的 Mono 版本 3.12.1)服务器中处理流水线请求,但我注意到管道中的第二个请求总是被忽略。

这是我的 netcat 命令来测试流水线:

这是 httppipe.txt 的内容:

我非常有信心我的 netcat 方法有效,因为我在 Java 服务器上成功地对其进行了测试。(意思是我看到了 2 个回复)

在我的 C# 服务器中,我尝试了 GetResult 和 GetResultAsync。GetResultAsync 的代码基本上是从 MSDN 示例中提取的。它看起来像这样:

编辑:还尝试在 Linux 上的 Mono 4.0 上无济于事。

0 投票
1 回答
139 浏览

c - TI C64x+ 上没有流水线的简单嵌套循环

以下代码在 C64x+ 上编译时不是流水线:

我的 IDE (Code Composer v6) 为内部循环提供以下消息:“循环无法有效调度,因为它包含复杂的条件表达式。尝试简化条件。”

问题似乎出在嵌套循环上,但我找不到更多关于优化这样简单的信息。

以前有没有人解决过类似的问题?

- 附加信息 -

  • 处理器:TMS320C64x+

  • 编译器:TI v8.0.3

  • 编译器标志:-mv6400+ --abi=eabi -O3 --opt_for_speed=4 --include_path="D:/TI/ccsv6/tools/compiler/ti-cgt-c6000_8.0.3/include" --advice:performance -g --issue_remarks --verbose_diagnostics --diag_warning=225 --gen_func_subsections=on --debug_software_pipeline --gen_opt_info=2 --gen_profile_info -k --c_src_interlist --asm_listing --output_all_syms

  • 链接器标志:-mv6400+ --abi=eabi -O3 --opt_for_speed=4 --advice:performance -g --issue_remarks --verbose_diagnostics --diag_warning=225 --gen_func_subsections=on --debug_software_pipeline --gen_opt_info=2 -- gen_profile_info -k --c_src_interlist --asm_listing --output_all_syms -z -m"dsp.map" -i"D:/TI/ccsv6/tools/compiler/ti-cgt-c6000_8.0.3/lib" -i"D: /TI/ccsv6/tools/compiler/ti-cgt-c6000_8.0.3/include" --reread_libs --warn_sections --xml_link_info="dsp_linkInfo.xml" --rom_model

0 投票
1 回答
2425 浏览

powershell - 两个单独的 Powershell 进程之间的流水线

假设我有两个 PowerShell 程序正在运行:Producer.ps1Consumer.ps1.

.ps1有没有办法在我拥有的两个文件之间建立客户端-服务器关系?

具体来说,Producer.ps1输出PSObject包含登录信息。有什么方法可以在两个对象之间建立一个侦听器和命名管道以将其直接传递PSObject到?Producer.ps1Consumer.ps1


注意:这两个文件不能合并,因为它们都需要以不同的 Windows 用户身份运行。我知道一种可能的通信解决方案是将其写入PSObjecttext/xml 文件,然后让客户端读取并擦除文件,但是我宁愿不这样做,因为它会暴露凭据。我愿意接受您的任何建议)

0 投票
1 回答
145 浏览

c - 基本指令如何并行运行

也许这是一个愚蠢的问题,但我正在努力更好地了解硬件内部工作原理......

如果一个 cpu 有多个线程并且我们有一组指令集来分配它。当我从http://www.lighterra.com/papers/basicinstructionscheduling/链接阅读它的工作原理时。它说编译器将创建一个指令依赖树,然后指令将并行运行。cpu 将如何知道依赖指令是否已完成。它会增加复杂性。

我写交流代码来看看这个

我认为 getchar() 和 putchar() 的指令是独立的,当我没有从键盘提供输入时,应该执行 putchar('a') 的其他线程指令,并且它应该在请求输入之前显示输出。但它一直在等待输入。

提前致谢。

0 投票
1 回答
492 浏览

c# - TPL 数据流批处理块重复元素

我的 DataFlow 管道以 a 开头,BatchBlock并且有几个任务将项目发布到此BatchBlock. 现在,这BatchBlock将在该方法的帮助下根据 Timer 将数据传播到下一个块TriggerBatch()

在这种情况下,您可以假设没有任何批次具有创建期间提供的(非常高的)批次大小,BatchBlock即每个触发的批次可能具有不同的大小。

就在触发之前,BatchBlock我想删除即将传播到管道中下一个块的批处理中存在的所有重复项。有没有办法我可以做到这一点?

0 投票
1 回答
728 浏览

fetch - 指令周期(PIC18)

我试图了解通过指令所需的步骤以及它们与每个振荡器周期的关系。PIC18F4321 的数据表似乎将此过程分为 2 个基本步骤:获取和执行。但是在说哪个步骤属于哪个振荡器周期时似乎并不一致。例如,它说:

在内部,程序计数器每 Q1 递增一次;该指令在 Q4 期间从程序存储器中取出并锁存到指令寄存器 (IR) 中。

这听起来很奇怪,因为它没有提到 Q2 和 Q3。仅凭这一点,我几乎会认为获取需要 1 个振荡器周期,因为它发生在第四季度。但再读一点,它说:

指令获取和执行以这样的方式流水线化,即获取需要一个指令周期,而解码和执行需要另一个指令周期。然而,由于流水线,每条指令在一个周期内有效地执行。

所以现在它告诉我获取需要 Q1 到 Q4。基于此,我假设如果不是流水线,指令将需要 2 个指令周期才能通过,因为完整的指令周期仅用于获取。但我了解在实践中流水线如何使它看起来只需要 1 个指令周期来完成一条指令。 

还有一点点,我相信这是最令人困惑的部分,它说:

在执行周期中,取出的指令在周期 Q1 被锁存到指令寄存器 (IR) 中。然后在 Q2、Q3 和 Q4 周期内解码并执行该指令。数据存储器在 Q2 期间读取(操作数读取)并在 Q4 期间写入(目标写入)。

根据我读过的这个和其他资料,它似乎将执行部分分为解码、读取、处理和写入(这让我感到困惑,因为当我认为它实际上并不是指执行部分时,它一直使用执行这个词“获取和执行”)。

1)现在,它什么时候做?当它说读/写将在第二季度/第四季度发生时非常清楚。那么Q3应该在处理吗?

2)解码的振荡器周期是多少?

3) 如果您刚刚在 Q4 中为同一条指令获取指令,为什么还要在 Q1 中再次将指令锁存到 IR?

0 投票
1 回答
162 浏览

python-2.7 - 如何在 python 中打印 3 阶段管道架构的记分牌?获取函数不可下标错误

这是我的汇编程序执行代码的两个部分。我在记分牌代码中遇到错误:函数不可下标。还有其他方法可以实现此代码吗?我想打印一个 3 阶段管道的记分牌,即操作码和寄存器。

0 投票
0 回答
48 浏览

promise - 具有 OnReceived 响应的持久连接

我刚刚开始学习 SignalR 中的“持久连接”,例如我能够发送预序列化的 json。

但是这种从客户端发送,接收服务器端然后再次发回任何响应的方法有点违反直觉。

如果在“持久连接”之上进行一些简单的基本管道化而不求助于集线器,有什么办法吗?

我只想能够做这样的事情:

此外,如果在服务器 OnReceived 中引发异常,它会去哪里?它被 SignalR 吞没了吗?我是否必须自己捕获并发回某种错误对象?

0 投票
3 回答
13811 浏览

http - HTTP/1.1 流水线和 HTTP/2 多路复用有什么区别?

是不是因为它要求按照请求的顺序向客户端做出响应,导致 HTTP 1.1 中的行头阻塞问题?

如果每个请求所用的时间完全相同,那么就不会有行首阻塞和 HTTP 1.1 流水线,并且会像 HTTP/2 多路复用一样执行?

(假设 HTTP/2 请求中没有请求优先级,而忽略 HTTP/2 的其他更改,例如标头压缩、二进制等)

0 投票
1 回答
224 浏览

python - 为什么从这个 Python 脚本到这个 socat 脚本的行缓冲管道不起作用?

我有一个 Python 脚本,可以将用户 IRC 命令(“/nick hello”、“/quit”等)转换为 IRC 协议消息。它从标准输入逐行输入并将翻译后的消息输出到标准输出。我还有一个非常简单的基于 socat 的脚本,它只打开一个给定地址和端口的 TCP 套接字。两者都可以自己正常工作。但是当我尝试将 IRC 脚本的输出通过管道传输到套接字脚本时,什么也没有发生。

这就是我想要发生的事情(为清楚起见,我为输出添加了“<”,为输入添加了“>”):

然而,这就是实际发生的情况:

这是我自己运行 IRC 脚本时发生的情况,显示它应该发送到套接字的内容:

这就是当我自己运行套接字脚本并手动输入由 IRC 脚本生成的相同 IRC 消息时发生的情况,表明 IRC 服务器确实响应了它们:

我尝试通过 echo 将 IRC 消息传送到命令中,它工作得很好。可以看到服务器发回了一条 PING 消息:

我尝试将脚本的输出重定向到一个文件,然后将其读入套接字脚本,这也有效:

我在两个命令上都尝试了 stdbuf -oL :

我试着把它用管道输送到猫中:

我尝试使用显式行缓冲将其管道传输到 cat 中:

我尝试将 cat 管道传输到套接字脚本中:

我尝试同时使用 bash 和 mksh。

以下是mksock的内容:

以下是user2irc的内容: http : //pastebin.com/jSDdHEEF

为什么当我将它通过管道传输到套接字脚本时,这个 Python 脚本不是行缓冲,我怎样才能做到这一点?