0%

更复杂的场景如何做并发控制呢?比如子协程中开启了新的子协程,或者需要同时控制多个子协程。这种场景下,select+chan的方式就显得力不从心了。Go 语言提供了 Context 标准库可以解决这类场景的问题,Context 的作用和它的名字很像,上下文,即子协程的下上文。Context 有两个主要的功能:

  • 通知子协程退出(正常退出,超时退出等);
  • 传递必要的参数。
阅读全文 »

控制并发数量可以避免服务器奔溃:以下方式尝试控制

注意:多个并发协程之间不需要通信,那么就可以使用 sync.WaitGroup

如果并发启动了多个子协程,需要等待所有的子协程完成任务,WaitGroup 非常适合于这类场景

  • 只是用Chan控制
阅读全文 »

Select的作用

select主要用于实现多路监听、实现超时处理

  • select case后面必须是一个IO操作
  • 一般情况下不用写default

select是Go中的一个控制结构,类似于switch语句,用于处理异步I0操作

阅读全文 »

报错信息:an: preconv: Bad system call (core dumped) man: nroff: Bad system call (core dumped)

找到的原因是man 的版本与linux 的SECCOMP 机制有冲突。找到方法,禁用MAN 的SECCOMP。
临时使用:
MAN_DISABLE_SECCOMP=1 man ls
设到环境变理后:
export MAN_DISABLE_SECCOMP=1
就可以直接使用,不用每次都加MAN_DISABLE_SECCOMP=1这句。

具体问题待解决~