golang多协程并发工作

package main

import (
"fmt"
"log"
"os"
"sync"
"time"
) type Task struct {
Name string
Age int
} func work(wg *sync.WaitGroup, jobs chan Task, w int, logger *log.Logger) {
defer wg.Done()
for true {
job, ok := <-jobs
if !ok {
break
}
logger.Printf("[%d]name=%s age=%d\n", w, job.Name, job.Age)
}
} func main() { start := time.Now()
file, err := os.OpenFile("info.log", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644)
if err != nil {
panic(err)
}
defer file.Close()
gLogger := log.New(file, "", log.Ldate|log.Ltime|log.Lshortfile)
gLogger.Println("[main] ready go") wg := &sync.WaitGroup{}
jobs := make(chan Task) workers := 10
for w := 0; w < workers; w++ {
wg.Add(1)
go work(wg, jobs, w, gLogger)
} for i := 0; i < 10000; i++ {
task := Task{
Name: fmt.Sprintf("Name-%d", i),
Age: i,
}
jobs <- task
}
close(jobs)
wg.Wait() gLogger.Printf("[main] done, cost: %s", time.Now().Sub(start)) }

golang多协程并发工作示例的更多相关文章

  1. 在C++中使用golang的协程

    开源项目cpp_features提供了一个仿golang协程的stackful协程库. 可以在c++中使用golang的协程,大概语法是这样的: #include <iostream> v ...

  2. GoLang之协程

    GoLang之协程 目前,WebServer几种主流的并发模型: 多线程,每个线程一次处理一个请求,在当前请求处理完成之前不会接收其它请求:但在高并发环境下,多线程的开销比较大: 基于回调的异步IO, ...

  3. Golang 之协程详解

    转自:https://www.cnblogs.com/liang1101/p/7285955.html 一.Golang 线程和协程的区别 备注:需要区分进程.线程(内核级线程).协程(用户级线程)三 ...

  4. python中的协程并发

    python asyncio 网络模型有很多中,为了实现高并发也有很多方案,多线程,多进程.无论多线程和多进程,IO的调度更多取决于系统,而协程的方式,调度来自用户,用户可以在函数中yield一个状态 ...

  5. Python进阶----异步同步,阻塞非阻塞,线程池(进程池)的异步+回调机制实行并发, 线程队列(Queue, LifoQueue,PriorityQueue), 事件Event,线程的三个状态(就绪,挂起,运行) ,***协程概念,yield模拟并发(有缺陷),Greenlet模块(手动切换),Gevent(协程并发)

    Python进阶----异步同步,阻塞非阻塞,线程池(进程池)的异步+回调机制实行并发, 线程队列(Queue, LifoQueue,PriorityQueue), 事件Event,线程的三个状态(就 ...

  6. 二、深入asyncio协程(任务对象,协程调用原理,协程并发)

      由于才开始写博客,之前都是写笔记自己看,所以可能会存在表述不清,过于啰嗦等各种各样的问题,有什么疑问或者批评欢迎在评论区留言. 如果你初次接触协程,请先阅读上一篇文章初识asyncio协程对asy ...

  7. python3通过gevent.pool限制协程并发数量

    协程虽然是轻量级的线程,但到达一定数量后,仍然会造成服务器崩溃出错.最好的方法通过限制协程并发数量来解决此类问题. server代码: #!/usr/bin/env python # -*- codi ...

  8. windows下多进程加协程并发模式

    好久没更新博客了.正好最近要整理一下最近这段时间做过的项目以及学习python的一些心得.如标题所示,今天就来说说windows下多进程加协程并发模式.其实网上还是蛮多在linux下的多进程加协程并发 ...

  9. Kotlin协程第一个示例剖析及Kotlin线程使用技巧

    Kotlin协程第一个示例剖析: 上一次https://www.cnblogs.com/webor2006/p/11712521.html已经对Kotlin中的协程有了理论化的了解了,这次则用代码来直 ...

  10. Go语言协程并发---管道信号量应用

    package main import ( "fmt" "math" "strconv" "time" ) /* ·10 ...

随机推荐

  1. servlet 作用域

    作用域总结 HttpServletRequest:一次请求,请求响应之前有效 HttpSession:一次会话开始,浏览器不关闭或不超时之前有效 ServletContext:服务器启动开始,服务器停 ...

  2. 【HUST】攻防实践|中间人攻击netcat通信过程

    更新(略微整理了一下行文逻辑的版本):[HUST]网络攻防实践|TCP会话劫持+序列号攻击netcat对话_shandianchengzi的博客-CSDN博客_tcp序列号攻击是如何实现的. 旧版博客 ...

  3. Pandas 清除 Excel 特殊字符

    清除 Excel 特殊字符 主要是为了做一个笔记, 用 遍历 DataFrame 用正则匹配特殊字符并替换. 是上个月初的项目了, 其中有个将 Excel 传入数据库的时候, 发现有特殊字符, 很奇怪 ...

  4. C语言一点五编程实战:纯 C 的模块化×继承×多态框架

    本文将大量涉及C语言高级操作,如函数指针.结构体指针.二级指针.指针频繁引用解引用.typedef.static.inline和C语言项目结构等知识,请确保自己不会被上述知识冲击,如果没有这顾虑,请尽 ...

  5. Data aggregation and group operations in pandas

    Data aggregation and group operations in pandas After loading,merging and preparing a dataset,you ma ...

  6. 使用 frp 进行内网穿透

    frp 是一个开源的内网穿透工具,可以使外网设备访问内网防火墙后的设备/服务器. 比如可以买一个 99元/年 的阿里云低配 ECS,然后把自己相对高配的旧电脑放在家里. 家里的旧电脑通过 frp 连上 ...

  7. 2023人形全能赛竞速机器人mega代码

    mega // @Author : Hcm #include <LobotServoController.h> // 舵机板通信 #include <OneButton.h> ...

  8. JDBC连接数据库增删改查实例

    查询所有 dao层代码: package example; import java.sql.Connection; import java.sql.DriverManager; import java ...

  9. 18-利用GPU训练

    1. 利用GPU训练(方式一) ① GPU训练主要有三部分,网络模型.数据(输入.标注).损失函数,这三部分放到GPU上. import torchvision import torch from t ...

  10. HyperWorks使用六面体和三棱柱单元进行实体网格剖分

    本节将演示如何使用 solid map 功能对一个复杂的几何实体进行网格剖分.剖分的思路是:首先对该实体进行适当的切割,以使其各个部分均处于 mappable 的状态:然后分别对各个子块进行 soli ...