golang多协程并发工作示例
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多协程并发工作示例的更多相关文章
- 在C++中使用golang的协程
开源项目cpp_features提供了一个仿golang协程的stackful协程库. 可以在c++中使用golang的协程,大概语法是这样的: #include <iostream> v ...
- GoLang之协程
GoLang之协程 目前,WebServer几种主流的并发模型: 多线程,每个线程一次处理一个请求,在当前请求处理完成之前不会接收其它请求:但在高并发环境下,多线程的开销比较大: 基于回调的异步IO, ...
- Golang 之协程详解
转自:https://www.cnblogs.com/liang1101/p/7285955.html 一.Golang 线程和协程的区别 备注:需要区分进程.线程(内核级线程).协程(用户级线程)三 ...
- python中的协程并发
python asyncio 网络模型有很多中,为了实现高并发也有很多方案,多线程,多进程.无论多线程和多进程,IO的调度更多取决于系统,而协程的方式,调度来自用户,用户可以在函数中yield一个状态 ...
- Python进阶----异步同步,阻塞非阻塞,线程池(进程池)的异步+回调机制实行并发, 线程队列(Queue, LifoQueue,PriorityQueue), 事件Event,线程的三个状态(就绪,挂起,运行) ,***协程概念,yield模拟并发(有缺陷),Greenlet模块(手动切换),Gevent(协程并发)
Python进阶----异步同步,阻塞非阻塞,线程池(进程池)的异步+回调机制实行并发, 线程队列(Queue, LifoQueue,PriorityQueue), 事件Event,线程的三个状态(就 ...
- 二、深入asyncio协程(任务对象,协程调用原理,协程并发)
由于才开始写博客,之前都是写笔记自己看,所以可能会存在表述不清,过于啰嗦等各种各样的问题,有什么疑问或者批评欢迎在评论区留言. 如果你初次接触协程,请先阅读上一篇文章初识asyncio协程对asy ...
- python3通过gevent.pool限制协程并发数量
协程虽然是轻量级的线程,但到达一定数量后,仍然会造成服务器崩溃出错.最好的方法通过限制协程并发数量来解决此类问题. server代码: #!/usr/bin/env python # -*- codi ...
- windows下多进程加协程并发模式
好久没更新博客了.正好最近要整理一下最近这段时间做过的项目以及学习python的一些心得.如标题所示,今天就来说说windows下多进程加协程并发模式.其实网上还是蛮多在linux下的多进程加协程并发 ...
- Kotlin协程第一个示例剖析及Kotlin线程使用技巧
Kotlin协程第一个示例剖析: 上一次https://www.cnblogs.com/webor2006/p/11712521.html已经对Kotlin中的协程有了理论化的了解了,这次则用代码来直 ...
- Go语言协程并发---管道信号量应用
package main import ( "fmt" "math" "strconv" "time" ) /* ·10 ...
随机推荐
- 遇到的问题之“input的值感觉没有设置上去,却有值”
案例一.批量设置参数 1.被设置的框 改为下拉框的问题可参考:https://www.cnblogs.com/saoge/p/16985318.html <td> <app:inpu ...
- 数据库事务隔离与Alembic数据恢复的实战艺术
title: 数据库事务隔离与Alembic数据恢复的实战艺术 date: 2025/05/15 00:05:13 updated: 2025/05/15 00:05:13 author: cmdra ...
- Torch-Pruning工具箱
Torch-Pruning 通道剪枝网络实现加速的工作. Torch pruning是进行结构剪枝的pytorch工具箱,和pytorch官方提供的基于mask的非结构化剪枝不同,工具箱移除整个通道剪 ...
- 网络编程:使用poll单线程处理所有I/O事件
事件驱动模型 事件驱动的好处:占用资源少,效率高,可扩展性强,是支持高性能高并发的不二之选. 事件驱动模型也叫作反应堆模型(reactor),或者是Event loop模型,该模型的核心有两点: 1. ...
- ASP.NET Core知识积累
1.[HttpGet(Name="xxxx")] 当在 ASP.NET Core 中的控制器中使用 [HttpGet(Name = "GetWeatherForecast ...
- 基于Python运用PyComCAD进行Autocad二次开发实例汇集
本文将对运用Pycomcad库(Pycomcad详见,https://github.com/JohnYang1210/PycomCAD)做的一些项目及其效果图进行展示(欢迎各位老铁pull reque ...
- 腾讯IMA VS 飞书知识问答:谁才是2025最强AI知识库?
AI创业失败,可私聊经验教训分享... 前几天小伙伴在讨论我开发的一套社群运营AI分身,其本质其实是一套个人知识库的AI产品,其依赖的就是我过往发布的文章. 这类AI聊天分身,最简单.不考虑" ...
- web ctf日记
X-Forworded-For:从本地访问 Refer:从**网址访问 一句话木马:`<?php @eval($_POST['a']);?>` eval将a作为PHP程序post进入(用蚁 ...
- 为Feign客户端自定义ErrorDecoder
摘要:重写Feign的错误解码器ErrorDecoder,以自定义业务逻辑. ErrorDecoder,顾名思义,它是发生错误或者异常情况时使用的一种解码器,允许我们对异常进行特殊处理. 在配 ...
- Spring AOP 面向切面编程之搞定表单重复提交实战
摘要:客户端在5秒内请求同一URL,而且关键请求参数相等,则视此次请求为重复提交,利用自定义注解 .Spring AOP 和 Guava Cache 技术栈在服务器端实现拦截表单重复提交,防止刷单. ...