小编tor*_*rek的帖子

Git 错误“致命:不明确的参数 'HEAD~':未知修订版本或路径不在工作树中。”

我想从项目存储库中删除我的最后一次提交。但是当我运行 'git reset --soft HEAD^ ' 或 'git reset --hard HEAD^' 时,

它显示“致命:不明确的参数“HEAD〜”:未知修订版或路径不在工作树中。使用“--”将路径与修订版分开,如下所示:“git [...] -- [...]”

有什么问题?

git

-1
推荐指数
1
解决办法
1万
查看次数

Golang 睡眠线程而不是忙等待

我正在编写Leslie Lamport 的 Bakery 算法的 Go 实现,该算法具有 busy-spin-waits 来处理一些最大数量的线程。


我正在编写一个 go 函数,除非满足特殊条件,否则该函数不应继续。到目前为止,我的代码如下所示:

func acquireLock() {
    ...
    for specialConditionIsFalse {
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

有没有更有效的方法来停止处理这个线程?

multithreading go busy-waiting

-2
推荐指数
1
解决办法
1181
查看次数

为什么子进程“sleep 10”不会终止?

我需要测试一个进程是否终止,我所拥有的只是它的 pid 号。为此,我测试伪文件“/proc/<pid>”是否存在。

为这个函数编写一个测试,我注意到这个过程没有按预期终止。

对于测试,我将“sleep 10”作为子进程运行,它应该运行 10 秒。开始这个过程后,我轮询伪文件“/proc/<pid>”是否消失。该伪文件永远不会消失,也不会检测到子进程的终止。

测试golang playground的代码,重现问题:https : //play.golang.org/p/fb4CbXkIjh3

我检查了该进程是否已创建,并且 pid 是否正确。在检查过程中看到它变成了<defunct>。它没有因此被删除。

问题如下:

  1. 为什么子进程不终止?
  2. 如何更改代码以使其终止?
package main

import (
    "fmt"
    "log"
    "os"
    "os/exec"
    "strconv"
    "time"
)

func main() {
    fmt.Println("Hello, playground")

    cmd := exec.Command("sleep", "10")
    if err := cmd.Start(); err != nil {
        log.Fatal("unexpected error:", err)
    }
    pidStr := strconv.Itoa(cmd.Process.Pid)
    log.Println("sleep pid:", pidStr)

    for {
        if _, err := os.Stat("/proc/" + pidStr); os.IsNotExist(err) {
            log.Println("detect termination of /proc/" + pidStr)
            return
        }
        log.Println("pgm /proc/" + …
Run Code Online (Sandbox Code Playgroud)

unix go

-2
推荐指数
1
解决办法
56
查看次数

为什么Go和Rust序列化结果不一致?

我想要的结果如下\xef\xbc\x8c,但Rust的结果是另一个。

\n
 [123 34 66 111 100 121 34 58 34 97 71 86 115 98 71 56 61 34 125]\n
Run Code Online (Sandbox Code Playgroud)\n

戈兰样本:

\n
type Response struct {\n    Body    []byte\n}\nfunc Test_Marshal(t *testing.T)  {\n    body := "hello"\n    resp := &Response{\n        Body:[]byte(body),\n    }\n    t.Log("resp:", resp)\n    result, _ := json.Marshal(resp)\n    t.Log("result: ", result)\n}\n
Run Code Online (Sandbox Code Playgroud)\n

去结果:

\n
    aa_test.go:17: resp: &{[104 101 108 108 111]}\n    aa_test.go:19: result:  [123 34 66 111 100 121 34 58 34 97 71 86 115 98 71 56 61 34 …
Run Code Online (Sandbox Code Playgroud)

marshalling go rust serde-json

-2
推荐指数
1
解决办法
436
查看次数

标签 统计

go ×3

busy-waiting ×1

git ×1

marshalling ×1

multithreading ×1

rust ×1

serde-json ×1

unix ×1