我正在尝试创建一个 Powershell 函数,充当 WSL 中 Vim 的包装器。我希望这个包装器能够接受来自管道的输入。
在 WSL 中,可以执行以下操作:
$ cat manylines.txt | vim -
Run Code Online (Sandbox Code Playgroud)
指示-Vim 应该从 stdin 读取输入,然后通过管道重定向该输入。这将打开 vim,命令输出已在缓冲区中,但没有任何关联的文件。(您也可以简单地使用 打开文件vim manylines.txt,但这通常不适用于其他命令或可执行文件的输出)。
在 Powershell 和 Windows 原生 Vim 中也可以实现同样的效果:
Get-Content manylines.txt | vim -
Run Code Online (Sandbox Code Playgroud)
可以更进一步,在另一个 Powershell 或 cmd 实例中执行 Vim:
Get-Content manylines.txt | powershell -Command vim -
Get-Content manylines.txt | cmd /c vim -
Run Code Online (Sandbox Code Playgroud)
但是,这不适用于 WSL Vim。
# doesn't work, Vim freezes
Get-Content manylines.txt | wsl vim -
Get-Content manylines.txt | wsl bash -c "vim …Run Code Online (Sandbox Code Playgroud) 我一直在阅读 CUDA 中的原子操作,并且更新模式atomicInc()似乎相当任意。
来自CUDA 编程指南:
Run Code Online (Sandbox Code Playgroud)unsigned int atomicInc(unsigned int* address, unsigned int val);读取位于全局或共享内存中的地址地址的 32 位字 old,计算 ((old >= val) ? 0 : (old+1)),并将结果存储回内存中的同一地址。这三个操作在一个原子事务中执行。该函数返回旧值。
这是增量和“环绕”操作。
atomicInc(&x, val)
与 非常相似
x = (x+1) % (val+1)。
这对于什么样的应用程序有用?这是 CUDA 编程中常见的代码模式吗?如果是这样,是否有专用硬件来执行此操作,这atomicInc()比使用 的等效操作更好atomicCAS()?