go语言进阶总结:与并发编程相关标准库内容学习
作者:互联网
前言
学习使用包括os
,os/exec
,runtime
,sync
,sync/atmoic
,os/signal
,context
等在内的多个标准库。
进程管理
进程调度算法通过变更进程的状态,使CPU资源的利用率最大化。对进程的管理涉及进程从创建,执行,销毁的全过程。
涉及标准库,包括:
- pkg/os:提供了不依赖平台的操作系统函数的接口.
- pkg/os/exec:执行外部命令.
创建进程
在Go语言中,Linux下创建进程使用的系统调用是clone
。而与进程相关的结构体为:os.Process
,通过如下方式可以创建一个进程。
os
:func StartProcess(name string, argv []string, attr *ProcAttr) (*Process, error)
是一个低级别的接口os/exec
:type Cmd struct
的相关方法,是一个高级别的接口封装。
1 |
|
一般应该尽量使用
os/exec
包
销毁进程
os.Exit(code int)
Goroutine
在并发编程中,同步是在最大化利用CPU资源时,同时保证执行单位(线程/进程)互斥访问临界资源的目的。线程/进程通信机制是达到同步的手段。
在Go的并发调度模型中,最小的执行单位是协程(goroutine
),使用go
关键字开启一个新的协程。goroutine
是非常轻量的,除了给它分配栈空间(4k),它所占用的内存空间是微乎其微的。
Go倾向使用基于管道channel的消息通信模型代替传统的基于共享内存的锁机制进行协同操作。
sync包
pkg/sync;提供了互斥锁这类的基本的同步原语
锁机制
1
2
3
4
5
6
7
8
9
10
11
12
13
14// Locker接口代表一个可以加锁和解锁的对象
type Locker interface
// 互斥锁
type Mutex struct
func (m *Mutex) Lock()
func (m *Mutex) Unlock()
// 读写锁
type RWMutex struct
func (rw *RWMutex) Lock() // 写锁
func (rw *RWMutex) Unlock()
func (rw *RWMutex) RLock() // 读锁
func (rw *RWMutex) RUnlock()
func (rw *RWMutex) RLocker() Locker其它操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15大专栏
标签:编程,进阶,Cmd,进程,func,error,go,os,RWMutex 来源: https://www.cnblogs.com/dajunjun/p/11699221.html