超輕量級golang的Goroutine池

2021-10-07 16:19:52 字數 901 閱讀 1782

// 這是個goroutine的 pool

type pool struct

兩種工作方式,一種是鏈式操作,另一種非鏈式操作,這裡只講鏈式操作

第一步初始化乙個池子,可以設定池子的容量,預設不限制

//初始化並返回池子的指標

func

new(limit ...

int)

*pool

//有傳入池子容量,賦值

iflen

(limit)

>

0&& limit[0]

>

0return p

}

//簡單粗暴,直接傳入乙個閉包方法

func

(p *pool)

add(f func()

)error

//新增任務到佇列中

p.list.

pushfront

(f)// 判斷是否需要開啟新的goroutine

var n int

for//未到達,跳出迴圈,進行fork

if p.count.

cas(n, n+1)

} p.

fork()

return

nil}

//開啟乙個協程,完成任務的協程會被go自動**

func

(p *pool)

fork()

//偽死迴圈,當清空佇列中的所有任務後會退出迴圈以及協程

for!p.closed.

val(

)else}}

()}

好了,乙個協程池的最主要內容就講完了,其他的我就不講了

http server 超輕量級web伺服器

有的時候做前端,想要執行一些 但是又沒有必要使用tomcat或者apache http server,這個時候乙個輕量級的簡單的http server就可以搞定了。http server是基於nodejs的http伺服器,它最大好處就是 可以使任意乙個目錄成為伺服器的目錄,完全拋開後台的沉重工程,直...

http server 超輕量級web伺服器

有的時候做前端,想要執行一些 但是又沒有必要使用tomcat或者apache http server,這個時候乙個輕量級的簡單的http server就可以搞定了。http server是基於nodejs的http伺服器,它最大好處就是 可以使任意乙個目錄成為伺服器的目錄,完全拋開後台的沉重工程,直...

http server 超輕量級web伺服器

有的時候做前端,想要執行一些 但是又沒有必要使用tomcat或者apache http server,這個時候乙個輕量級的簡單的http server就可以搞定了。http server是基於nodejs的http伺服器,它最大好處就是 可以使任意乙個目錄成為伺服器的目錄,完全拋開後台的沉重工程,直...