Sobes.tech
Junior — Middle

Омӯзиши истифодаи усули Cancel дар вақти сохтани контекст бо мӯҳлати муайян тавассути Context.WithTimeout зарур аст?

sobes.tech AI

Ҷавоб аз AI

Иҳ, тавсия дода мешавад, ки функсияи Cancel-ро, ки аз ҷониби context.WithTimeout баргардонида мешавад, ҳатман даъват кунед, то захираҳои вобаста ба контекстро ҳарчи зудтар, ки дигар лозим нестанд, озод кунед. Ҳатто агар вақти муайян гузашта ва контекст автоматӣ бекор шавад, даъвати Cancel кӯмак мекунад, ки аз ҷараёни захираҳо канорагирӣ шавад.

Маслиҳат барои истифода:

ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()

// ctx-ро дар амалҳо истифода баред

Даъвати defer cancel() кафолат медиҳад, ки захираҳо ҳангоми баромадан аз функсия озод мешаванд, ҳатто агар амал пеш аз вақти муайян анҷом ёбад.