-
-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
context: small refactor to always use Context type instead of multipl…
…e types (#9705)
- Loading branch information
1 parent
66294e3
commit 909c9c7
Showing
9 changed files
with
108 additions
and
108 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
import context | ||
import time | ||
|
||
const ( | ||
// a reasonable duration to block in an example | ||
short_duration = 1 * time.millisecond | ||
) | ||
|
||
fn after(dur time.Duration) chan int { | ||
dst := chan int{} | ||
go fn (dur time.Duration, dst chan int) { | ||
time.sleep(dur) | ||
dst <- 0 | ||
}(dur, dst) | ||
return dst | ||
} | ||
|
||
// This example passes a context with an arbitrary deadline to tell a blocking | ||
// function that it should abandon its work as soon as it gets to it. | ||
fn test_with_deadline() { | ||
dur := time.now().add(short_duration) | ||
ctx := context.with_deadline(context.background(), dur) | ||
|
||
defer { | ||
// Even though ctx will be expired, it is good practice to call its | ||
// cancellation function in any case. Failure to do so may keep the | ||
// context and its parent alive longer than necessary. | ||
context.cancel(ctx) | ||
} | ||
|
||
after_ch := after(1 * time.second) | ||
ctx_ch := ctx.done() | ||
select { | ||
_ := <-after_ch { | ||
assert false | ||
} | ||
_ := <-ctx_ch { | ||
assert true | ||
} | ||
} | ||
} | ||
|
||
// This example passes a context with a timeout to tell a blocking function that | ||
// it should abandon its work after the timeout elapses. | ||
fn test_with_timeout() { | ||
// Pass a context with a timeout to tell a blocking function that it | ||
// should abandon its work after the timeout elapses. | ||
ctx := context.with_timeout(context.background(), short_duration) | ||
defer { | ||
context.cancel(ctx) | ||
} | ||
|
||
after_ch := after(1 * time.second) | ||
ctx_ch := ctx.done() | ||
select { | ||
_ := <-after_ch { | ||
assert false | ||
} | ||
_ := <-ctx_ch { | ||
assert true | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters