In Go, context is an essential part of managing deadlines and cancellation of goroutines. The `context` package in Go provides the ability to create derived contexts with deadlines, cancellation signals, and other request-scoped values. Here’s how you can implement deadlines and cancellation using the `Context` type.
To create a context with a deadline, you can use the `context.WithDeadline` or `context.WithTimeout` functions. The following example demonstrates how to use these functions effectively.
package main
import (
"context"
"fmt"
"time"
)
func main() {
// Set a timeout of 3 seconds
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel() // Ensures that the resources are cleaned up
// Simulate a long-running process
select {
case <-time.After(2 * time.Second):
fmt.Println("Process completed successfully.")
case <-ctx.Done():
fmt.Println("Error:", ctx.Err())
}
}
How do I avoid rehashing overhead with std::set in multithreaded code?
How do I find elements with custom comparators with std::set for embedded targets?
How do I erase elements while iterating with std::set for embedded targets?
How do I provide stable iteration order with std::unordered_map for large datasets?
How do I reserve capacity ahead of time with std::unordered_map for large datasets?
How do I erase elements while iterating with std::unordered_map in multithreaded code?
How do I provide stable iteration order with std::map for embedded targets?
How do I provide stable iteration order with std::map in multithreaded code?
How do I avoid rehashing overhead with std::map in performance-sensitive code?
How do I merge two containers efficiently with std::map for embedded targets?