共有 1 個檔案被更改,包括 35 行新增 和 0 行删除
@ -0,0 +1,35 @@
@@ -0,0 +1,35 @@
|
||||
package common |
||||
|
||||
import "net/http" |
||||
|
||||
type JobResult struct { |
||||
Res *http.Response |
||||
Err error |
||||
ReqData interface{} // job.data
|
||||
} |
||||
|
||||
type job struct { |
||||
req *http.Request |
||||
c chan JobResult |
||||
data interface{} |
||||
} |
||||
|
||||
var jobs = make(chan job) |
||||
|
||||
func InitAsyncHTTP(nWorkers uint) { |
||||
for i := uint(0); i < nWorkers; i++ { |
||||
go asyncHTTPWorker() |
||||
} |
||||
} |
||||
|
||||
func DoAsyncHTTP(r *http.Request, c chan JobResult, data interface{}) { |
||||
jobs <- job{r, c, data} |
||||
} |
||||
|
||||
func asyncHTTPWorker() { |
||||
for { |
||||
job := <-jobs |
||||
res, err := Client.Do(job.req) |
||||
job.c <- JobResult{res, err, job.data} |
||||
} |
||||
} |
載入中…
新增問題並參考