标签: pipeline

在c中实现流水线操作.最好的方法是什么?(自己的linux shell)

我想不出有任何方法可以在c中实现真正有效的流水线操作.这就是我决定写在这里的原因.我不得不说,我明白管道/前叉/ mkfifo是如何工作的.我见过很多实现2-3个管道的例子.这很简单.我的问题开始了,当我必须实现shell时,管道计数是未知的.

我现在得到的东西:例如.

ls -al | tr a-z A-Z | tr A-Z a-z | tr a-z A-Z
Run Code Online (Sandbox Code Playgroud)

我把这样的线转换成这样的东西:

array[0] = {"ls", "-al", NULL"}
array[1] = {"tr", "a-z", "A-Z", NULL"}
array[2] = {"tr", "A-Z", "a-z", NULL"}
array[3] = {"tr", "a-z", "A-Z", NULL"}
Run Code Online (Sandbox Code Playgroud)

所以我可以使用

execvp(array[0],array)
Run Code Online (Sandbox Code Playgroud)

稍后的.

Untli现在,我相信一切都好.当我试图将这些函数输入/输出重定向到彼此时,问题开始了.

这就是我这样做的方式:

    mkfifo("queue", 0777);

    for (i = 0; i<= pipelines_count; i++) // eg. if there's 3 pipelines, there's 4 functions to execvp
    {
    int b = fork();             
    if (b == 0) // child
        {           
        int c …
Run Code Online (Sandbox Code Playgroud)

c linux pipeline pipe mkfifo

3
推荐指数
1
解决办法
4790
查看次数

F#管道运算符如何工作

有一个代码:

 //e = 1/2*Sum((yi -di)^2)
    let error y d =
        let map = 
            Array.map2 (fun y d -> (y - d) ** 2.0) y d
        let sum = 
            Array.sum map
        (sum / 2.0)

    let error2 y d =
        Array.map2 (fun y d -> (y - d) ** 2.0) y d
        |> Array.sum
        |> (/) 2.0
Run Code Online (Sandbox Code Playgroud)

我理解这些功能应该产生相同的结果,但结果有很大的不同.有谁能解释一下?

ps简化示例:

let test = [|1..10|]
    let res = test
                |> Array.sum
                |> (/) 5
Run Code Online (Sandbox Code Playgroud)

我希望test = 11(sum(1..10)= 55然后是55/5)但是在Array.sum管道不能正常工作之后(结果test = 0).

f# pipeline

3
推荐指数
1
解决办法
410
查看次数

ASP.NET4和ASP.NET5 Http管道之间有什么区别?

我已经阅读了.NET4.6中的新内容,其中一个是ASP.NET 5,我很兴奋.

其中一个新事物是New modular HTTP request pipeline,但没有更多关于它究竟会如何改变的信息.

这篇文章中唯一的参考是

ASP.NET 5引入了一种精简且快速的新HTTP请求管道.此管道是模块化的,因此您只能添加所需的组件.通过减少管道中的开销,您的应用程序将获得更好的吞吐量.新管道也支持OWIN.

ASP.NET4.5和ASP.NET5 Http管道之间有哪些主要区别?如何控制模块化?

asp.net pipeline asp.net-4.5 .net-4.6 asp.net-core

3
推荐指数
1
解决办法
479
查看次数

管道加注循环,用于手臂中的说明

以下是具有3级流水线的Arm Cortex M4处理器的说明。我们如何知道此类指令的流水线重新填充周期数?

     Assembler                   Cycles
 1.  MOV PC, Rm                  1 + P
 2.  ADD PC, PC, Rm              1 + P
 3.  B <label>                   1 + P
 4.  BL <label>                  1 + P
Run Code Online (Sandbox Code Playgroud)

根据数据表,P是管道重新填充所需的循环数。根据目标指令的对齐方式和宽度,以及处理器是否设法尽早推测地址,该范围为1到3。

assembly arm pipeline instruction-set

3
推荐指数
1
解决办法
883
查看次数

Webmethods中的正则表达式修饰符

我试图在Webmethods映射步骤中使用正则表达式模式.问题是忽略使用正则表达式修饰符匹配字符串的情况.
例如:

输入是'TEST'或'test'或'Test'

Branch on 'input'
/test/i : MAP
Run Code Online (Sandbox Code Playgroud)

但正如我在不同的webmethods论坛上读到的那样,在Webmethods中使用访问修改器是一种限制.所以,我无法使用'/ i'.
有关如何做到这一点的任何想法或暗示?
提前致谢.

regex pipeline webmethods eai modifiers

3
推荐指数
1
解决办法
1201
查看次数

OpenCL 2.x管道 - 它们实际上如何工作?

我已经阅读了OpenCL 2.x管道API的这个描述,并通过khronos.org上的Pipe API页面引导.我觉得有点嫉妒,几乎完全在CUDA工作,这个漂亮的功能仅在OpenCL中可用(并且抱歉CUDA功能未被OpenCL正确包含,但这是一个不同的问题),所以我想我会问"如何来CUDA没有管道机制".但后来我意识到我甚至都不知道那究竟是什么意思.所以,相反,我会问:

  1. OpenCL管道如何在AMD独立GPU/APU上运行?...

    • 什么信息写在哪里?
    • 如何通过使用管道来实现内核工作组到核心的调度?
    • 管道内核是否被编译在一起(例如,他们的SPIR表单)?
    • 管道的使用是否允许通过特定于核心的高速缓存在不同内核之间传递数据(OpenCL用语中的"本地存储器",CUDA用语中的"共享存储器")?那将是真棒.
  2. 有没有一种方法管道"应该"在GPU上工作?即API作者设想甚至是书面形式的东西?
  3. OpenCL管道如何在基于CPU的OpenCL实现中工作?

pipeline gpgpu opencl opencl-pipes

3
推荐指数
1
解决办法
1535
查看次数

bash 4.3 lastpipe bug或功能?

我尝试在bash中使用lastpipe选项,当从交互式提示命令行运行时,它似乎无法按预期工作.

phi@phiz:~$ shopt lastpipe
lastpipe        on

phi@phiz:~$ echo $BASH_VERSION
4.3.11(1)-release

phi@phiz:~$ echo yo | read a ; echo "a='$a'"
a=''
Run Code Online (Sandbox Code Playgroud)

所以我在$ a中没有得到任何东西,但是如果在子流程中运行它有点工作虽然没用我在顶级交互中需要它

phi@phiz:~$ (echo yo | read a ; echo "a='$a'")
a='yo'
Run Code Online (Sandbox Code Playgroud)

这种行为有望吗?我完成了我的RTFM职责,无法确定这是出于意图还是出乎意料.

我是bash的新手,当来自其他炮弹时,这让人感到困惑

提前感谢任何建议.

bash pipeline

3
推荐指数
1
解决办法
437
查看次数

ForEach-Object是对管道中的单个对象还是对象集合进行操作?

我很难掌握PowerShell管道的工作方式,并且我意识到很多问题都是由于ForEach-Object.在我使用的其他语言中,foreach在一个集合上运行,依次遍历集合的每个元素.我假设ForEach-Object,在PowerShell管道中使用时,也会这样做.但是,我读到的有关管道的所有内容都表明集合的每个元素都是分别通过管道传递的,并且重复调用下游cmdlet,分别对每个元素进行操作,而不是整个集合.

那么ForEach-Object对集合中的单个元素进行操作,而不是整个集合上的操作吗?以不同的方式查看它,管道操作符是否通过整个集合ForEach-Object,然后迭代它,或者管道对象是否迭代集合并将每个元素分别传递给ForEach-Object

powershell pipeline

3
推荐指数
1
解决办法
1820
查看次数

同时在多个平台上运行Gitlab CI

我有一个针对多个OS(Linux,Windows,MacOS)以及多个CPU体系结构(i386,x86_64,arm,Aarch64)进行编译和打包的C ++项目。为此,我正在使用Jenkins来获取源代码并运行在每个系统上并行构建脚本。这是一个简单的工作解决方案,因为我的构建脚本处理了系统差异。

现在,我正在研究Gitlab CI / CD,它具有许多吸引人的地方(能够将构建脚本保留为存储库的一部分,可以与git repo和票务系统很好地集成在一起,可以自然使用Docker容器,等),但我找不到在相互平行的多个架构/系统中运行相同管道的任何方法。

所以,说我的构建脚本是:

build:
  stage: build
  script: 
    - uname -m > arch.txt
  artifacts:
    paths:
      - arch.txt
Run Code Online (Sandbox Code Playgroud)

如何告诉Gitlab我想同时在多个运行器/ Docker容器/系统中运行此作业?到目前为止,我阅读的所有文档都涉及在一个构建上运行多个测试集成多个项目根据分支机构在不同的环境中进行部署。到目前为止,我还没有尝试过进行许多单独的构建,分别测试和打包它们以及报告其独立结果的方法。在Gitlab CI / CD上可行吗?

pipeline gitlab gitlab-ci

3
推荐指数
1
解决办法
2388
查看次数

powershell数组add-member - 寻找优雅的代码

我有一个非常基本的PowerShell数组:$ TestArray有2个文本列:Price和TimeStamp(这就是我得到它们的方式,没有什么可以做的):

Price  TimeStamp       
-----  ----------------       
0.0567 1542056680.72746
0.0567 1542056650.34414
0.0555 1542056197.46668
0.0551 1542056167.28967
Run Code Online (Sandbox Code Playgroud)

我想,在单个PowerShell行中添加一个舍入Time2

$Time2 = [math]::Round($TestArray.TimeStamp)
Run Code Online (Sandbox Code Playgroud)

我想的代码是:

 $TestArray | Add-Member -Name Time2 -MemberType NoteProperty -Value { [math]::Round($Table.TimeStamp) }
Run Code Online (Sandbox Code Playgroud)

当然,我可以做一个ForEach循环; 它可以很容易地处理它,但我想在这一行代码中实现这一点.

任何的想法 ?

干杯,菲利普

arrays powershell pipeline

3
推荐指数
1
解决办法
67
查看次数