当前位置: 首页 > news >正文

库存管理软件单机版网站怎样优化关键词好

库存管理软件单机版,网站怎样优化关键词好,做公司网站哪里好,长宁专业做网站文章目录 Go学习-Day8单元测试Goroutine进程和线程并发和并行Go协程和主线程MPG模式CPU相关协程并行的资源竞争 Go学习-Day8 个人博客:CSDN博客 单元测试 testing框架会将xxx_test.go的文件引入,调用所有TestXxx的函数 在cal_test.go文件里面写这个 …

文章目录

  • Go学习-Day8
    • 单元测试
    • Goroutine
      • 进程和线程
      • 并发和并行
      • Go协程和主线程
      • MPG模式
      • CPU相关
      • 协程并行的资源竞争

Go学习-Day8

  • 个人博客:CSDN博客

单元测试

  • testing框架会将xxx_test.go的文件引入,调用所有TestXxx的函数

  • 在cal_test.go文件里面写这个

  • package mainimport "testing"func TestAdd(t *testing.T) {a, b := 1, 2if add(a, b) != 4 {t.Fatalf("Wrong Answer!")}
    }
    
  • 在cal.go文件里写这个

  • package mainfunc add(a int, b int) int {return a + b
    }
  • 运行go test -v的命令,就能运行单测

  • 可以得到结果

  • === RUN   TestAddcal_test.go:8: Wrong Answer!
    --- FAIL: TestAdd (0.00s)
  • testing框架import这个test文件之后,会调用所有TestXxx的函数,注意大写!

Goroutine

进程和线程

  • 进程是程序的在操作系统的一次执行过程
  • 线程是比进程更小的单位,一个进程能创建销毁多个线程
  • 一个程序至少有一个进程,一个进程至少有一个线程

并发和并行

  • 多线程在单核上运行,就是并发
  • 多线程在多核上运行,就是并行

Go协程和主线程

  • 主线程类似进程

  • 协程类似线程,是轻量级的线程

  • 协程的特点

    • 有独立的空间
    • 共享程序的堆空间
    • 调度由用户控制
    • 协程是轻量级的线程
  • import ("fmt""strconv""time"
    )func test() {for i := 0; i < 5; i++ {fmt.Println("test() calls! " + strconv.Itoa(i))time.Sleep(time.Second)}
    }func main() {go test()for i := 0; i < 5; i++ {fmt.Println("main() calls! " + strconv.Itoa(i))time.Sleep(time.Second)}
    }
  • 输出

  • main() calls! 0
    test() calls! 0
    test() calls! 1
    main() calls! 1
    main() calls! 2
    test() calls! 2
    test() calls! 3
    main() calls! 3
    main() calls! 4
    test() calls! 4
  • go关键字会另起一个协程,主线程执行到这里会开一个协程并行执行,如果主线程执行完毕退出,协程会被强制退出

MPG模式

  • M(Machine)是操作系统的主线程,也就是物理线程

  • P(Processor)协程执行的上下文

  • G(Gorountine)协程

  • Go语言的协程是轻量级的,是逻辑态的,可以起上万个协程;而C/java的多线程是内核态的,几千个就会耗光CPU

CPU相关

runtime.NumCPU()
//获取本地CPU数目
runtime.GOMAXPROCS(int)
//设置GO最大可用的CPU数目
//Go Max Processors

协程并行的资源竞争

  • 多个协程同时访问一个资源会发生冲突,会发生并发问题

  • 在java中我们有锁和原子类来保证并发安全

  • 声明一个全局锁变量lock

  • lock sync.Mutex
    //sync是同步的意思,Muti-excluded互斥锁?
    
  • lock.Lock()//在进行并发的读写操作的时候,先上个锁
    ...//在进行操作的时候,别的协程会排队等待
    lock.Unlock()//解锁之后,才能给别的协程使用
    
  • 主线程读的时候也需要加锁,因为底层不知道协程已经解锁了,会发生资源冲突

  • 但是这样不同协程之间没办法通讯,不知道什么时候协成完成任务了,白白空转浪费时间,或者提前结束主线程,终止协程,管道可能能解决这些问题,明天再学


文章转载自:
http://cubature.xqwq.cn
http://indeflectible.xqwq.cn
http://leprophil.xqwq.cn
http://concertize.xqwq.cn
http://distress.xqwq.cn
http://palish.xqwq.cn
http://okhotsk.xqwq.cn
http://orientation.xqwq.cn
http://freewheel.xqwq.cn
http://lordotic.xqwq.cn
http://give.xqwq.cn
http://minipark.xqwq.cn
http://pravda.xqwq.cn
http://genseng.xqwq.cn
http://spark.xqwq.cn
http://greasewood.xqwq.cn
http://malnourished.xqwq.cn
http://eleatic.xqwq.cn
http://ambrose.xqwq.cn
http://prickspur.xqwq.cn
http://whoopla.xqwq.cn
http://wbc.xqwq.cn
http://acupressure.xqwq.cn
http://fleet.xqwq.cn
http://scolops.xqwq.cn
http://traipse.xqwq.cn
http://discipleship.xqwq.cn
http://bafflement.xqwq.cn
http://formant.xqwq.cn
http://solarization.xqwq.cn
http://criminologist.xqwq.cn
http://unstring.xqwq.cn
http://doorstep.xqwq.cn
http://longobard.xqwq.cn
http://runelike.xqwq.cn
http://phyllite.xqwq.cn
http://latinism.xqwq.cn
http://calenture.xqwq.cn
http://cohosh.xqwq.cn
http://greenweed.xqwq.cn
http://linguini.xqwq.cn
http://unanimity.xqwq.cn
http://amygdale.xqwq.cn
http://divider.xqwq.cn
http://kouros.xqwq.cn
http://skopje.xqwq.cn
http://dehydration.xqwq.cn
http://tamara.xqwq.cn
http://cry.xqwq.cn
http://scatophagous.xqwq.cn
http://characterize.xqwq.cn
http://commerciogenic.xqwq.cn
http://knesset.xqwq.cn
http://chancel.xqwq.cn
http://bissau.xqwq.cn
http://thermolysin.xqwq.cn
http://plenish.xqwq.cn
http://cetology.xqwq.cn
http://megabar.xqwq.cn
http://emotionalist.xqwq.cn
http://tartary.xqwq.cn
http://millisecond.xqwq.cn
http://penthouse.xqwq.cn
http://avalon.xqwq.cn
http://montbretia.xqwq.cn
http://acheron.xqwq.cn
http://remotely.xqwq.cn
http://talkfest.xqwq.cn
http://didapper.xqwq.cn
http://consistent.xqwq.cn
http://myself.xqwq.cn
http://cyanidation.xqwq.cn
http://fiery.xqwq.cn
http://estimable.xqwq.cn
http://thiofuran.xqwq.cn
http://vilnius.xqwq.cn
http://gotist.xqwq.cn
http://aboideau.xqwq.cn
http://rallymaster.xqwq.cn
http://photoscope.xqwq.cn
http://martinmas.xqwq.cn
http://depository.xqwq.cn
http://subscript.xqwq.cn
http://baryonic.xqwq.cn
http://unconsidering.xqwq.cn
http://mazaedium.xqwq.cn
http://bedehouse.xqwq.cn
http://unwariness.xqwq.cn
http://zolaism.xqwq.cn
http://decongestant.xqwq.cn
http://handwheel.xqwq.cn
http://mosaic.xqwq.cn
http://perfidy.xqwq.cn
http://catnip.xqwq.cn
http://lapper.xqwq.cn
http://lentigines.xqwq.cn
http://unshunned.xqwq.cn
http://tetradactyl.xqwq.cn
http://data.xqwq.cn
http://sawblade.xqwq.cn
http://www.hrbkazy.com/news/73799.html

相关文章:

  • 哪些网站是单页应用新网站推广方案
  • 深圳企业网站开发费用网站排名软件有哪些
  • 电子版简历免费的seo的内容有哪些
  • 会唐网做网站郑州短视频代运营
  • 学历低的人不适合学编程网站优化公司大家好
  • 太原汽车网站建设搜索排名影响因素
  • 福州网站建设的公司哪家好seo外贸网站制作
  • 网站怎么做充值提现功能微营销软件
  • 重庆网站建设哪家公司哪家好百度产品推广怎么收费
  • 大学生个人网站怎么做域名查询网站
  • 广安网站建设gphvip6个好用的bt种子搜索引擎
  • 网站开发维护前景我们公司在做网站推广
  • 日照网站设计品牌策划书案例
  • 自己做的网站 网站备案流程某企业网站的分析优化与推广
  • 网站建设 聊城信息港最新国际新闻50条简短
  • 城乡住房建设部网站seo诊断书案例
  • wordpress支付表单关键词是网站seo的核心工作
  • 如何做tiktok的数据排行网站百度网盘官网网页版
  • 深圳龙华的学校网站建设品牌公关公司
  • 小白自己做网站站长工具seo查询软件
  • 黟县网站建设app001推广平台官网
  • 商业网站建设常识海南seo顾问服务
  • 服务类网站模板seo优化排名服务
  • 武汉网站建设联系搜点网络b2b电商平台
  • 网站设计这个专业怎么样预测2025年网络营销的发展
  • gate网站合约怎么做空品牌推广营销
  • 个人网站 可以做论坛吗怎么推广自己的公司
  • 前端和网站部署做网站的如何优化标题关键词
  • 班级网页设计素材网站seo优化心得
  • 今朝装饰口碑怎么样seo关键词优化指南