package main; import ( "fmt" "sync" "runtime" "time" ) //加锁,注意锁要以指针的形式传进来,不然只是拷贝 func total1(num *int, mu *sync.Mutex, ch chan bool) { mu.Lock(); for i := 0; i < 1000; i++ { *num += i; } ch <- true; mu.Unlock(…
package main;   import (     "time"     "fmt" )   func main() {     //time.Time代表一个纳秒精度的时间点     var t time.Time;     //返回当前时间     t = time.Now();     fmt.Printf("%v\n", t);     //反回所在时区     fmt.Printf("%v\n", t.Loca…
package main; import ( "log" "os" "time" "fmt" ) func main() { //创建输出日志文件 logFile, err := os.Create("./" + time.Now().Format("20060102") + ".txt"); if err != nil { fmt.Println(err); } /…
path包的使用 package main; import ( "fmt" "path" ) //go语言path包的学习 func main() { //返回路径的最后一个元素 fmt.Println(path.Base("./a/b/c")); //如果路径为空字符串,返回. fmt.Println(path.Base("")); //如果路径只有斜线,返回/ fmt.Println(path.Base("///…
R语言  ggplot2包的学习   分析数据要做的第一件事情,就是观察它.对于每个变量,哪些值是最常见的?值域是大是小?是否有异常观测? ggplot2图形之基本语法: ggplot2的核心理念是将绘图与数据分离,数据相关的绘图与数据无关的绘图分离ggplot2是按图层作图ggplot2保有命令式作图的调整函数,使其更具灵活性ggplot2将常见的统计变换融入到了绘图中.ggplot的绘图有以下几个特点:第一,有明确的起始(以ggplot函数开始)与终止(一句语句一幅图):其二,图层之间的叠加…
前面刚讲到goroutine和channel,通过goroutine启动一个协程,通过channel的方式在多个goroutine中传递消息来保证并发安全.今天我们来学习sync包,这个包是Go提供的基础包,提供了锁的支持.但是Go官方给的建议是:不要以共享内存的方式来通信,而是要以通信的手段来共享内存.所以他们是提倡使用channel的方式来实现并发控制. 学过Java的同学对锁的概念肯定不陌生,在Java中提供Sychronized关键字提供独占锁,Lock类提供读写锁.在sync包中实现的…
golang 中的 sync 包有一个很有用的功能,就是 WaitGroup 先说说 WaitGroup 的用途:它能够一直等到所有的 goroutine 执行完成,并且阻塞主线程的执行,直到所有的 goroutine 执行完成. WaitGroup 总共有三个方法:Add(delta int), Done(), Wait().简单的说一下这三个方法的作用. Add:添加或者减少等待 goroutine 的数量 Done:相当于Add(-1) Wait:执行阻塞,直到所有的WaitGroup数量…
第一轮学习 golang "并发内容" 学习笔记,Go指南练习题目解析.使用学习资料 <Go-zh/tour tour>.记录我认为会比较容易忘记的知识点,进行补充,整理总结,以及自己的心得体会. Go 程.信道.带缓冲信道.range .close.select.等价二叉树.sync.Mutex…
sync同步包 Mutex互斥锁: 能够保证在同一时间段内仅有一个goroutine持有锁,有且仅有一个goroutine访问共享资源,其他申请锁的goroutine将会被阻塞直到锁被释放.然后重新争抢锁的持有权. 结构体和方法: type Locker interface { Lock() UnLocker } func (m *Mutex) Lock() func (m *Mutex) UnLock() package main import ( "fmt" "sync&…
文章转载至:https://www.bytelang.com/article/content/A4jMIFmobcA= golang中实现并发非常简单,只需在需要并发的函数前面添加关键字"Go",但是如何处理go并发机制中不同goroutine之间的同步与通信,golang 中提供了sync包和channel机制来解决这一问题. sync 包提供了互斥锁这类的基本的同步原语.除 Once 和 WaitGroup 之外的类型大多用于底层库的例程.更高级的同步操作通过信道与通信进行. type Co…