兩種工作方式,一種是鏈式操作,另一種非鏈式操作,這裡只講鏈式操作// 這是個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伺服器,它最大好處就是 可以使任意乙個目錄成為伺服器的目錄,完全拋開後台的沉重工程,直...