当前位置: 首页 > 面试题库 >

计算/显示活动goroutine的数量

卫弘图
2023-03-14
问题内容

我有一个队列和一个同时进行出队和入队的函数。我想确保只要列表中有内容,队列中就可以使用适当数量的goroutine。

这是我正在使用的代码,但我想知道是否有一种方法可以打印当前活动的goroutine的数量

链接到游乐场

var element int

func deen(queue chan int) {

    element := <-queue
    fmt.Println("element is ", element)
    if element%2 == 0 {
        fmt.Println("new element is ", element)
        queue <- (element*100 + 11)
        queue <- (element*100 + 33)
    }
}

func main() {
    queue := make(chan int, 10)
    queue <- 1
    queue <- 2
    queue <- 3
    queue <- 0 
    for len(queue) != 0 {
        for i := 0; i < 2; i++ {
            go deen(queue)
        }
    }
    fmt.Scanln()
    fmt.Println("list is has len", len(queue)) //this must be 0

}

问题答案:

有,runtime.NumGoroutine但是您正在解决这个错误。

  1. 您的循环将继续产生goroutine。
  2. 由于for循环,这将不必要地消耗cpu周期。

一种方法是使用sync.WaitGroup。

func deen(wg *sync.WaitGroup, queue chan int) {
    for element := range queue {
        wg.Done()
        fmt.Println("element is ", element)
        if element%2 == 0 {
            fmt.Println("new element is ", element)
            wg.Add(2)
            queue <- (element*100 + 11)
            queue <- (element*100 + 33)
        }
    }
}

func main() {
    var wg sync.WaitGroup
    queue := make(chan int, 10)
    queue <- 1
    queue <- 2
    queue <- 3
    queue <- 0
    for i := 0; i < 4; i++ {
        wg.Add(1)
        go deen(&wg, queue)
    }
    wg.Wait()
    close(queue)
    fmt.Println("list is has len", len(queue)) //this must be 0
}

playground



 类似资料:
  • 我是机器人和爪哇的新手。我已经构建了一个计算器,当我输入3个输入时,我需要它来自动显示结果,但我不知道该怎么做。 我将multiply添加到了一个文本视图(通过属性onclick),它可以工作,但我希望它能在textview中自动显示。

  • 问题内容: 我的网站上有嵌入式流,但是我想增加页面上的实时观众数。有没有办法用PHP / AJAX做到这一点,显示当前正在查看我的一个网页的人数? 问题答案: 免责声明:我很久以前就做过这样的事情,所以这是丑陋的旧代码(我不会在第一次开始编程时就努力使外观看起来更好/不是,因为这只是为了让您了解如何做到的,而不是随意输入任何特定代码)。 您只需要制作一个表并按住session_id即可。然后在该表

  • 问题内容: 我试图使用此代码从我的主要活动中调用第二个活动 作为我的OrderSummaryActivity: 但是布局不会在此活动中显示,只是空白页。这是布局的xml: 有什么提示吗? 问题答案: 尝试将 OrderSummaryActivity.class 更改为:

  • 问题内容: 我一直在寻找Android API,并且一直在寻找一种方法来计算当前日期和未来日期之间的天数。我对android很陌生,几年来我还没有做过Java。什么是最简单的计算方法? 谢谢 问题答案: 最简单的方法是为此使用Joda Time Days类:

  • 问题内容: 我有一个为工作而创建的程序。该程序获取上载的文件,读取该文件,然后将数据放入GUI中的JList中。GUI实际上有两个列表,用户可以像往常一样使用JList突出显示它们,然后单击箭头以移动项目,从而可以在左右列表之间移动项目。列表是多间隔选择。 我要添加的一个小添加项是某种类型的计数器,该计数器向用户显示在实际在列表之间移动它们之前已选择了多少个项目。这将是动态的,因此如果用户按住控件

  • 问题内容: 我有一个数据集,,和。每个资源可以被多个项目利用。 我想统计每个季度使用资源的项目数量。 因此,如果项目在特定年份的Q1开始并在当年的Q3结束,而project2在Q2开始并在Q3结束,那么我想为Q2计数2个项目,因为在Q1期间,project1和project2都处于活动状态。 这是我的数据集: 这是我要寻找的结果: 问题答案: 使用理货单: 使用from的日期,生成所有季度及其开始