Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

floscodes/futurez

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

64 Commits

Repository files navigation

futurez

CI License

futurez is a small runtime for running asynchronous tasks using futures in Zig.

Minimal Example

const std = @import("std");
const futurez = @import("futurez");
const Runtime = futurez.Runtime;
fn main() !void {
 const allocator = std.heap.page_allocator;
 var rt = try Runtime.init(allocator);
 defer rt.deinit();
 const task = try rt.spawn(myTaskFunction, .{});
 const result = task.join(i32);
 std.debug.print("Result: {d}\n", .{result});
}
fn myTaskFunction() i32 {
 return 42;
}

For a complete example showcasing advanced usage with dynamic allocations and multiple parameters, see examples/basic.zig.

Overview

futurez spawns as many worker threads as logical CPU cores available on your machine. These threads continuously pick up and run asynchronous tasks you spawn via Runtime.spawn. Finished tasks remain in the task queue until you call the join() method on the associated *Task to retrieve the result.

You can also control the number of worker threads by initializing the runtime with a specific core count using initWithCores():

const allocator = std.heap.page_allocator;
var rt = try Runtime.initWithCores(allocator, 4);
defer rt.deinit();

About

A small runtime for running futures in zig.

Topics

Resources

License

Stars

Watchers

Forks

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /