Cancels futures, with the option to interrupt running ones.
Value
cancel() returns (invisibly) the canceled Futures after
flagging them as "canceled" and possibly interrupting them as well.
Canceling a lazy or a finished future has no effect.
See also
A canceled future can be reset() to a lazy, vanilla future
such that it can be relaunched, possibly on another future backend.
Examples
## Set up two parallel workers
plan(multisession, workers = 2)
## Launch two long running futures
fs <- lapply(c(1, 2), function(duration) {
future({
Sys.sleep(duration)
42
})
})
## Wait until at least one of the futures is resolved
while (!any(resolved(fs))) Sys.sleep(0.1)
## Cancel the future that is not yet resolved
r <- resolved(fs)
cancel(fs[!r])
## Get the value of the resolved future
f <- fs[r]
v <- value(f)
message("Result: ", v)
#> Result: 42
## The value of the canceled future is an error
try(v <- value(fs[!r]))
#> Error : Future (<unnamed-3>) of class MultisessionFuture was canceled (pid 903487) [future <unnamed-3> (5b7f9b8d5597957350ae4fca43a43c40-3); on 5b7f9b8d5597957350ae4fca43a43c40@hb-x1-2023<903171> at 2026-06-06 12:21:20.393124]
## Shut down parallel workers
plan(sequential)
