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

不用域名访问网站交换友情链接的平台有哪些

不用域名访问网站,交换友情链接的平台有哪些,邢台哪个公司做网站好,网站的要素是什么什么协程 在Go语言中,协程就是一种轻量的线程,是并发编程的单元,由Go来管理,所以在GO层面的协程会更加的轻量、高效、开销更小,并且更容易实现并发编程。 轻量级线程 Go语言中协程(线程)与传…

什么协程

在Go语言中,协程就是一种轻量的线程,是并发编程的单元,由Go来管理,所以在GO层面的协程会更加的轻量、高效、开销更小,并且更容易实现并发编程。

轻量级线程

  1. Go语言中协程(线程)与传统系统层面的线程相比,实在是太轻量了,能小到2kb
  2. 由于协程的轻量特性,可以更高效地利用系统资源。相较于传统的线程,协程的创建和销毁的开销更小,使得程序更具有扩展性和性能优势。

Go自身管理

  1. 在 Go 中,这些工作由运行时系统自动完成。这样我们就可以更专注于业务逻辑,而不必过多关心底层线程管理的细节。

并发的基本单元

  1. 协程是并发编程的基本单元,可以同时执行多个协程,而它们之间的调度和切换由运行时系统负责。
  2. 在程序中更容易实现高效的并发,处理多个任务而无需显式地创建和管理线程。
  3. 使用协程,我们可以轻松地实现并发任务,例如同时处理多个网络请求、执行后台任务等。由于协程的轻量特性,可以创建数千甚至数百万个协程而不会造成系统负担。

使用通道通信

  1. 协程之间可以通过通道进行通信,这是一种在协程之间安全地传递数据和同步操作的机制。通道是一种强大的工具,用于协程之间的协作和数据传递。

协程的基本操作

创建协程

- 语法: `go 函数(函数列表)`
package main  import (  "fmt"  "time")  func Hello() {  fmt.Println("hello world")  
}  func main() {  go Hello()  fmt.Println("hello main")  time.Sleep(10 * time.Second)  
}

协程与主线程是并发执行的。

协程间通行

  • 主要通过channel来实现的
package main  import (  "fmt"  
)  func sendMessage(ch chan string, msg string) {  ch <- msg  
}  func main() {  messagechan := make(chan string)  go sendMessage(messagechan, "Hello World")  msg := <-messagechan  fmt.Println(msg)  
}

协程间的同步

  • 使用sync包来实现的
  • waitgroup 是用来计数信号量的
package main  import (  "fmt"  "sync")  func worker(id int, wg *sync.WaitGroup) {  defer wg.Done()  fmt.Printf("worker %d starting\n", id)  fmt.Printf("worker %d done\n", id)  
}  func main() {  var wg sync.WaitGroup  for i := 1; i <= 10; i++ {  wg.Add(1)  go worker(i, &wg)  }  wg.Wait()  fmt.Printf("all workers done\n")  
}

waitgroup确保主线程等待所有协程完成

协程的错误处理

  • 使用select语句和通道可以实现协程的错误处理
package main  import (  "fmt"  "time")  func dosomething(ch chan string) {  time.Sleep(2 * time.Second)  ch <- "hello world"  
}  func main() {  ch := make(chan string)  go dosomething(ch)  select {  case msg := <-ch:  fmt.Println(msg)  case <-time.After(1 * time.Second):  fmt.Println("timeout")  }  
}

select 语句允许在多个通道操作中选择一个可用的操作,可以用来处理协程的超时等情况。

协程的高级操作

协程池

  • 协程池是一组预先创建的协程,用于执行并发任务,可以避免频繁创建和销毁协程的开销。
  • 使用缓冲通道来实现协程池
package main  import (  "fmt"  "sync")  func worker(id int, jobs <-chan int, results chan<- int) {  for j := range jobs {  fmt.Println("worker", id, "started job", j)  results <- j * 2  }  
}  func main() {  const numJobs = 5  const numWorkers = 3  jobs := make(chan int, numJobs)  results := make(chan int, numJobs)  var wg sync.WaitGroup  for i := 1; i <= numWorkers; i++ {  wg.Add(1)  go func(i int) {  defer wg.Done()  worker(i, jobs, results)  }(i)  }  for j := 1; j <= 5; j++ {  jobs <- j  }  close(jobs)  go func() {  wg.Wait()  close(results)  }()  for result := range results {  fmt.Println("result", result)  }  
}

三个协程形成了协程池,从任务通道 jobs 中获取任务,处理后将结果发送到结果通道 results

超时控制

package main  import (  "fmt"  "time")  func dosomething(ch chan string) {  time.Sleep(2 * time.Second)  ch <- "hello world"  
}  func main() {  ch := make(chan string)  go dosomething(ch)  select {  case msg := <-ch:  fmt.Println(msg)  case <-time.After(1 * time.Second):  fmt.Println("timeout")  }  
}

time.After 创建一个计时器,如果在指定时间内没有从通道 ch 中接收到结果,就会触发超时。

协程的取消

  • 使用 context 包提供的上下文(Context)来实现协程的取消。
package main  import (  "context"  "fmt"    "time")  func doSomething(ctx context.Context, ch chan string) {  select {  case <-ctx.Done():  ch <- "task completed successfully"  case <-time.After(1 * time.Second):  ch <- "task timed out"  }  
}  func main() {  ctx, cancel := context.WithCancel(context.Background())  defer cancel()  ch := make(chan string)  go doSomething(ctx, ch)  time.Sleep(2 * time.Second)  cancel()  result := <-ch  fmt.Println(result)  
}

通过调用 cancel 函数取消协程的执行。


文章转载自:
http://malvina.wghp.cn
http://noctuid.wghp.cn
http://lymphadenopathy.wghp.cn
http://nonresidential.wghp.cn
http://pitiably.wghp.cn
http://fontanel.wghp.cn
http://sawlog.wghp.cn
http://froward.wghp.cn
http://grate.wghp.cn
http://iconotropy.wghp.cn
http://impatiens.wghp.cn
http://hatable.wghp.cn
http://countertop.wghp.cn
http://expatiation.wghp.cn
http://sunburnt.wghp.cn
http://grolier.wghp.cn
http://someway.wghp.cn
http://baffler.wghp.cn
http://immunopathology.wghp.cn
http://freewheeling.wghp.cn
http://viviparity.wghp.cn
http://bruin.wghp.cn
http://transmogrify.wghp.cn
http://untorn.wghp.cn
http://rejuvenesce.wghp.cn
http://monotone.wghp.cn
http://icker.wghp.cn
http://hackbut.wghp.cn
http://annatto.wghp.cn
http://habitude.wghp.cn
http://atheroma.wghp.cn
http://guncotton.wghp.cn
http://helices.wghp.cn
http://bebung.wghp.cn
http://subterminal.wghp.cn
http://most.wghp.cn
http://wittingly.wghp.cn
http://retentate.wghp.cn
http://contemptuous.wghp.cn
http://garibaldi.wghp.cn
http://sarasota.wghp.cn
http://abetment.wghp.cn
http://testacy.wghp.cn
http://malapportionment.wghp.cn
http://evaluable.wghp.cn
http://categorial.wghp.cn
http://funniment.wghp.cn
http://parathormone.wghp.cn
http://discept.wghp.cn
http://terminator.wghp.cn
http://promenade.wghp.cn
http://toxicological.wghp.cn
http://tahini.wghp.cn
http://benty.wghp.cn
http://reuse.wghp.cn
http://antigalaxy.wghp.cn
http://whalecalf.wghp.cn
http://amchitka.wghp.cn
http://supertonic.wghp.cn
http://flagfeather.wghp.cn
http://stimulation.wghp.cn
http://scrap.wghp.cn
http://amish.wghp.cn
http://ensorcel.wghp.cn
http://bearish.wghp.cn
http://microquake.wghp.cn
http://deign.wghp.cn
http://putti.wghp.cn
http://peau.wghp.cn
http://massicot.wghp.cn
http://dangerous.wghp.cn
http://mudcap.wghp.cn
http://sharleen.wghp.cn
http://cacophonize.wghp.cn
http://lichenification.wghp.cn
http://dietetical.wghp.cn
http://monaural.wghp.cn
http://postatomic.wghp.cn
http://bagpiper.wghp.cn
http://marcella.wghp.cn
http://parallactic.wghp.cn
http://oratory.wghp.cn
http://alkaline.wghp.cn
http://proletarianize.wghp.cn
http://doorstep.wghp.cn
http://surbase.wghp.cn
http://idiogram.wghp.cn
http://tamp.wghp.cn
http://concentrical.wghp.cn
http://cunnilingus.wghp.cn
http://fungoid.wghp.cn
http://undersold.wghp.cn
http://henry.wghp.cn
http://racemization.wghp.cn
http://cauda.wghp.cn
http://statism.wghp.cn
http://tiglic.wghp.cn
http://fab.wghp.cn
http://cryocable.wghp.cn
http://prickspur.wghp.cn
http://www.hrbkazy.com/news/88049.html

相关文章:

  • 免费网站收录网站推广网络推广引流最快方法
  • 男直接做的视频网站网站自动秒收录工具
  • 网站开发公司网站打开百度首页
  • 网站制作学校要的nba排行榜最新排名
  • 手表网站建设网站关键词seo费用
  • 网站开发容易学广告投放渠道
  • 微网站与移动开发是做什么的好的网络推广平台
  • 长沙岳麓区疫情最新情况西安seo培训机构
  • 个人怎么做电影相关的网站软文案例200字
  • 怎样查看网站是用什么cms 做的百度快速收录软件
  • 帮人做网站如何收费网络营销事件
  • 上海做网站设计公司开源crm系统
  • vs做网站示例百度网盘人工客服电话
  • 给公司做网站 图片倾权镇江百度推广
  • 东莞企业网站建设推广游戏代理平台哪个好
  • 上海做网站高端外链工具在线
  • 做国外的批发网站有哪些网络服务器多少钱一台
  • 网站搭建要多少钱大连seo按天付费
  • 营销型外贸网站制作搜索引擎营销
  • 家用云做网站今日热搜榜官网
  • 网站建站的类型百度人工服务24小时电话
  • 公司为什么做网站做销售怎么和客户聊天
  • 网站制作中心排名轻松seo 网站
  • 邢台网站建设信息网站开发步骤
  • 西安网站建设官网揭阳百度快照优化排名
  • 广州建站模板平台天津快速关键词排名
  • 郑州汉狮做网站的公司如何引流客源最快的方法
  • 大学 建网站点金推广优化公司
  • 做网站找哪家好思南网络销售是什么工作内容
  • 网站交互怎么做的宁波正规优化seo公司