main函数中如何等待协程运行完毕

使用channel同步

package main
import (
    "fmt"
)

func printNumber(num int, c chan struct{}) {
  fmt.Println(num)
  c <- struct{}{}
}

func main() {
  sign := make(chan struct{}, 10)
  for i:=0;i<10;i++ {
    go printNumber(i, sign)
  }
  for i:=0;i<10;i++{
    <-sign
  }
  fmt.Println("Done.")
}

使用sync.WaitGroup

package main
import (
    "fmt"
    "sync"
)

func printNumber(num int, callback func()) {
  fmt.Println(num)
  callback()
}

func main() {
  var wg sync.WaitGroup
  wg.Add(10)
  for i:=0;i<10;i++ {
    go printNumber(i, wg.Done)
  }
  wg.Wait()
  fmt.Println("Done.")
}

原文地址:https://www.cnblogs.com/linyihai/p/10465950.html

时间: 2024-10-19 09:23:27

main函数中如何等待协程运行完毕的相关文章

python main函数中变量默认为global variable

在python的main函数中的变量默认为全局变量,而其他的def函数中的变量则默认为局部变量. 当然,局部变量会优先于全局变量,在执行formal_print(t_global)语句时便可看出. 测试代码如下: <span style="font-size:18px;">#coding=utf-8 #测试python的全局变量,局部变量的机制 def formal_print(s_global):#常规的传参用法,传递参数进行print,变量名可任意 print &quo

C++ main函数中参数argc和argv含义及用法

argc 是 argument count的缩写,表示传入main函数的参数个数: argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0]一定是程序的名称,并且包含了程序所在的完整路径,所以确切的说需要我们输入的main函数的参数个数应该是argc-1个: 第一个参数argc用来存放命令行参数的个数第二个参数argv是指针数组,它是用来存放命令行中各个参数和命令字的字符串的 具体可看:C++ main函数中参数argc和argv含义

yield学习续:yield return迭代块在Unity3D中的应用——协程

必读好文推荐: Unity协程(Coroutine)原理深入剖析 Unity协程(Coroutine)原理深入剖析再续 上面的文章说得太透彻,所以这里就记一下自己的学习笔记了. 首先要说明的是,协程并不是线程,协程是运行在主线程中的,是和主线程同步执行的代码,不同的地方是运行的方法可以被yield return在当前帧进行打断,到下一帧后可以继续从被打断的地方继续运行. 下面我们看一个示例,场景中有一个空的GameObject对象,其绑定了下面的脚本: 1 using UnityEngine;

main()函数中argv的理解及赋值

一.理解 C编译器允许main()函数没有参数,或者有两个参数(有些实现允许更多的参数,但这只是对标准的扩展).参数argc(argument count)是int类型,表示命令行中的字符串数:argv(argument value)是一个指向字符串的指针数组.命令行中的每个字符串被存储到内存中,并且分配一个指针指向它.系统使用空格把各个字符串格开.一般情况下,把程序本身的名字赋值给argv[0],接着,把剩下的第一个字符串赋给argv[1],等等.比如编译运行abc.exe,命令行输入abc.

(转)C++ main函数中参数argc和argv含义及用法

原博地址:https://blog.csdn.net/dcrmg/article/details/51987413 argc 是 argument count的缩写,表示传入main函数的参数个数: argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0]一定是程序的名称,并且包含了程序所在的完整路径,所以确切的说需要我们输入的main函数的参数个数应该是argc-1个: 简单用法示例,新建工程键代码: #include <iostr

C++ main() 函数中argc和argv的含义和用法

argc 是 argument count的缩写,表示传入main函数的参数个数: argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0]一定是程序的名称, 并且包含了程序所在的完整路径,所以确切的说需要我们输入的main函数的参数个数应该是argc-1个: 简单用法示例,新建工程键代码: #include <iostream> using namespace std; void main(int argc,char *argv[

main函数中argc理解

其实: int main(int argc,char *argv[])是UNIX和Linux中的标准写法,而int main()只是UNIX及Linux默许的用法..void main(int argc, char* argv[ ])等同于void main(int argc, char* *argv) 看个例子 testargc.c 就会明白它们的用法了:#include<unistd.h>#include<stdio.h>int main(int argc,char *argv

vc++下给main函数中的argv[i]初始化

在VC++中设置工程的调试状态:工程-->设置-->调试-->程序变量: int main(int argc , char* argv[]){ printf("%S\n",argv[i]);//   i变量代表自定义数字. return 0; }

子类用一个名为subitems的数组属性保存父类对象,为什么不能获取父类对象的信息呢???在main函数中subitems为空,不知道为什么。

main.m如下 1 #import <Foundation/Foundation.h> 2 #import "BNRContainer.h" 3 int main(int argc, const char * argv[]) { 4 @autoreleasepool { 5 6 //创建一个NSMutableArray对象,并用items变量保存该对象的地址 7 BNRContainer *items = [[BNRContainer alloc] init]; 8 fo