Skip to content

kdraigo/utils

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

kdraigo/utils

Concurrent Task Management in Go

This Go package provides functionality for managing concurrent tasks using futures and promises. It includes interfaces for handling asynchronous tasks, cancellation, timeouts, and event callbacks.

Installation

go get -u github.com/kdraigo/utils
package main

import (
	"context"
	"fmt"
	"time"

	"github.com/kdraigo/utils/pkg/sync"
)

func main() {
	// Create a context for the task.
	ctx := context.Background()

	// Define an asynchronous task function.
	asyncTask := func(promise sync.Promise[int]) {
		// Simulate a time-consuming task.
		time.Sleep(2 * time.Second)

		// Send the result through the promise.
		err := promise.Send(42)
		if err != nil {
			fmt.Println("Error sending data:", err)
		}
	}

	// Run the asynchronous task.
	future := sync.AsyncTask(ctx, 1, asyncTask)

	// Wait for the task to complete and get the result.
	result := future.Get()
	fmt.Println("Task result:", result)
}
package main

import (
	"context"
	"fmt"
	"time"

	"github.com/kdraigo/utils/pkg/sync"
)

func main() {
	// Create a context with a timeout.
	ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
	defer cancel()

	// Define an asynchronous task function.
	asyncTask := func(promise sync.Promise[int]) {
		// Simulate a time-consuming task.
		time.Sleep(5 * time.Second)

		// Send the result through the promise.
		err := promise.Send(42)
		if err != nil {
			fmt.Println("Error sending data:", err)
		}
	}

	// Run the asynchronous task with a timeout.
	future := sync.AsyncTaskWithTimeOut(ctx, 1, 3*time.Second, asyncTask)

	// Wait for the task to complete and get the result.
	result := future.Get()
	fmt.Println("Task result:", result)
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors