伺服器開發利器golangcontext用法詳解

2021-12-29 21:49:28 字數 1832 閱讀 9184

伺服器開發利器golangcontext用法詳解。

在go伺服器中,對於每個請求的request都是在單獨的goroutine中進行的,處理乙個request也可能設計多個goroutine之間的互動, 使用context可以使開發者方便的在這些goroutine裡傳遞request相關的資料、取消goroutine的signal或截止日期。

// a context carries a deadline, cancelation signal, and request-scoped values

// across api boundaries. its methods are safe for simultaneous use by multiple

// goroutines.

type context inte***ce

//每1秒work一下,同時會判斷ctx是否被取消了,如果是就退出

func dostuff(ctx context.context)

func main() 輸出

15:59:22 work

15:59:24 work

15:59:25 work

15:59:26 work

15:59:27 done

15:59:31 end可以看到dostuff在context超時的時候被取消了,ctx.done()被關閉。

將context.withdeadline替換為context.withtimeout

func timeouthandler() 輸出

16:02:47 work

16:02:49 work

16:02:50 work

16:02:51 work

16:02:52 done

16:02:56 end根據**advanced go concurrency patterns5分48秒處的**編寫dotimeoutstuff替換dostuff

go func() , val inte***ce{}) context參見搜尋程式userip中的**

關鍵的**如下:

// newcontext returns a new context carrying userip.

func newcontext(ctx context.context, userip net.ip) context.context

// fromcontext extracts the user ip address from ctx, if present.

func fromcontext(ctx context.context) (net.ip, bool) the withcancel, withdeadline, and withtimeout functions take a context (the

parent) and return a derived context (the child) and a cancelfunc. calling

the cancelfunc cancels the child and its children, removes the parent's

reference to the child, and stops any associated timers.裡面需要注意的就是 呼叫cancelfunc會取消child以及child生成的context,取出父context對這個child的引用,停止相關的計數器。

Gulp開發伺服器

yarn add browser sync dev const browsersync require browser sync const bs browsersync.create 建立乙個開發伺服器 啟動服務 const serve module.exports 執行yarn gulp ser...

開發伺服器控制項

一.基類的選擇 control 控制項開發基類,所有控制項都直接或間接繼承該類。提供各類控制項的通用屬性和方法,id,visible等.擴充套件靈活性最強。webcontrol 繼承至control,還增加了布局,可訪問性,外觀樣式等特性。compositecontrol 把現有控制項聚合起來建立乙...

linux開發伺服器環境

由於換電腦,重新配置了哈伺服器,都是我的悲劇,用ghost盤對盤對拷的時候選錯了順序,悲劇發生,只有重新配置。配置samba的時候老是寫不進去,找了半天原因,由於寫對單詞了。還是redhat el 6.samba共享建立 首先將全域性設定為share vi etc samba smb.conf 先在...