1.golang的map是线程安全的吗?怎么安全使用map

不安全,需要进行资源保护。
sync互斥锁,或者redis分布式锁 或者:这个字典类型提供了一些常用的键值存取操作方法,并保证了这些操作的并发安全
var ma sync.Map //该类型是开箱即用,只需要声明既可
ma.Store("key", "value") // 存储值
ma.Delete("key") //删除值
ma.LoadOrStore("key", "value")// 获取值,如果没有则存储
fmt.Println(ma.Load("key"))//获取值 //遍历
ma.Range(func(key, value interface{}) bool {
fmt.Printf("key:%s ,value:%s \n", key, value)
//如果返回:false,则退出循环,
return true
})

2.线程独享什么,共享什么

堆:根据代码动态分配内存,频繁的new,delete造成空间不连续,从而产生大量碎片,使程序效率降低
栈:存放局部变量,由编译器自动管理,无需我们手工控制 共享:
1.进程代码段
2.进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)
3.进程打开的文件描述符
4.信号的处理器
5.进程的当前目录
6.进程用户ID与进程组ID
独享:
当一个方法执行时,所有的变量和参数都会保存在堆栈中内存空间,这个空间是线程独享的,所以线程之间不会相互冲突。
1.线程ID
2.寄存器组的值
3.线程的堆栈
4.错误返回码
5.线程的信号屏蔽码

3.进程状态转换

4.Log包线程安全吗?

安全,因为:
在输出的位置做了线程安全的保护,加了锁
l.mu.Lock()
defer l.mu.Unlock()

5.写的循环队列是不是线程安全?

channel上面实现的是线程安全

如果是切片实现,需要加锁实现线程安全。但是效率变低了
不是,怎么保证线程安全,加锁,效率有点低啊,Go推崇原子操作和channel

6.go协程线程安全吗

不安全,需要进行资源保护。
sync互斥锁,或者redis分布式锁

7.go为什么高并发好?go的调度模型

因为协程,go天生支持并发

GMP:
goroutine说到底其实就是协程,但是它比线程更小,几十个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享

8.Golang 中常用的并发模型

通过channel通知实现并发控制
通过sync包中的WaitGroup实现并发控制
在Go 1.7 以后引进的强大的Context上下文,实现并发控制

9.进程与线程

进程:资源单位(数据隔离)
线程:执行单位(数据共享)
​ ps:每个进程都自带一个线程,线程才是真正的执行单位,进程只是再线程中提供资源

最新文章

  1. Ubuntu安装c++编译器
  2. 移动APP项目优化
  3. mysql对表操作的各种语句
  4. 让 Web 站点崩溃最常见的七大原因
  5. Pro ASP.NET MVC –第六章 MVC的基本工具
  6. DragRigidbody2D
  7. javascript 获取项目根路径
  8. Regionals 2013 :: North America - Southeast USA
  9. 智能卡安全机制比较系列(一)CardOS
  10. EF Unit Of Work
  11. 【算法系列学习】巧妙建图,暴搜去重 Counting Cliques
  12. JS-斜杠和反斜杠的转换
  13. webAPI 控制器(Controller)太多怎么办?
  14. Tickets HDU - 1260 水DP
  15. vue使用tradingview开发K线图相关问题
  16. codeforces820B Mister B and Angle in Polygon 2017-06-28 09:42 123人阅读 评论(0) 收藏
  17. AI 高等数学、概率论基础
  18. Qt入门——使用QT+VS2008开发windows应用程序
  19. phpStudy安装
  20. gitblit server windows搭建

热门文章

  1. 「Python实用秘技04」为pdf文件批量添加文字水印
  2. Activity Fragment Service生命周期图
  3. 在DigitalOcean vps中安装vnstat监控流量,浏览器打开php代码。。。
  4. 在build中配置resources, 来防止我们资源导出失败问题
  5. C++ DLL注入工具完整源码
  6. ideal 创建maven 项目
  7. Java中的String,StringBuilder,StringBuffer三者的区别?
  8. poj_3190
  9. Java流程控制01:用户交互Scanner
  10. 密码学之PRP/PRF转换引理