小编new*_*eee的帖子

如何在 vscode 中调试 goroutine?

考虑下面的小片段:

package main

import (
    "fmt"
    "sync"
)

func main() {
    var wg sync.WaitGroup
    wg.Add(2)
    go func() {
        defer wg.Done()
        for i := 1; i < 100; i++ {
            fmt.Println("A:", i)
        }
    }()
    go func() {
        defer wg.Done()
        for i := 1; i < 100; i++ {
            fmt.Println("B:", i)
        }
    }()
    wg.Wait()
}

Run Code Online (Sandbox Code Playgroud)

在 delve 中,我们可以使用以下命令轻松地在 goroutine 之间切换

goroutine
goroutine <id>
goroutine <id> <command>
Run Code Online (Sandbox Code Playgroud)

如果我想在 goroutine 1 中逐步运行,只需使用命令

goroutine 1 next
Run Code Online (Sandbox Code Playgroud)

在vscode中,似乎处理goroutines的唯一方法是调用堆栈,但是,这似乎是go runtime的内部线程,而不是goroutines,那么如何将运行过程集中在指定的goroutine中呢?

go goroutine visual-studio-code delve

6
推荐指数
1
解决办法
1215
查看次数

期待`T:Read`或`T:Write`的泛型函数如何接受自变量`&mut T`?

当泛型函数需要一个参数为时T,为什么它要使用参数为&mut T

我试图使用serialize_intoserialize_frombincode板条箱中将字符串序列化到文件。签名是

pub fn serialize_into<W, T: ?Sized>(writer: W, value: &T) -> Result<()>
where
    W: std::io::Write,
    T: serde::Serialize
Run Code Online (Sandbox Code Playgroud)

pub fn deserialize_from<R, T>(reader: R) -> Result<T>
where
    R: std::io::Read,
    T: serde::de::DeserializeOwned
Run Code Online (Sandbox Code Playgroud)

我尝试使用std::BufWriter和进行序列化,BufReader但似乎只能使用&mut BufWriter

考虑一下:

use bincode;
use std::io::{BufWriter, BufReader};
use std::fs::File;

fn main() {
    let x = String::from("hello");
    let mut f1 = BufWriter::new(File::create("foo.txt").unwrap()); 
    bincode::serialize_into( &mut f1, &x).unwrap();
    let  mut f2 = BufReader::new(File::open("foo.txt").unwrap());
    let  y: …
Run Code Online (Sandbox Code Playgroud)

rust

4
推荐指数
1
解决办法
86
查看次数

标签 统计

delve ×1

go ×1

goroutine ×1

rust ×1

visual-studio-code ×1