A multicore future is a future that uses multicore evaluation, which means that its value is computed and resolved in parallel in another process.

multicore(
...,
workers = availableCores(constraints = "multicore"),
envir = parent.frame()
)

## Arguments

... Additional arguments passed to Future(). A positive numeric scalar or a function specifying the maximum number of parallel futures that can be active at the same time before blocking. If a function, it is called without arguments when the future is created and its value is used to configure the workers. The function should return a numeric scalar. The environment from where global objects should be identified.

## Value

A MulticoreFuture If workers == 1, then all processing using done in the current/main R session and we therefore fall back to using an sequential future. This is also the case whenever multicore processing is not supported, e.g. on Windows.

## Details

This function is not meant to be called directly. Instead, the typical usages are:

# Evaluate futures in parallel on the local machine via as many forked
# processes as available to the current R process
plan(multicore)

# Evaluate futures in parallel on the local machine via two forked processes
plan(multicore, workers = 2)


For the total number of cores available including the current/main R process, see parallelly::availableCores().

Not all operating systems support process forking and thereby not multicore futures. For instance, forking is not supported on Microsoft Windows. Moreover, process forking may break some R environments such as RStudio. Because of this, the future package disables process forking also in such cases. See supportsMulticore() for details. Trying to create multicore futures on non-supported systems or when forking is disabled will result in multicore futures falling back to becoming sequential futures.

For processing in multiple background R sessions, see multisession futures.

Use availableCores() to see the total number of cores that are available for the current R session. Use availableCores("multicore") > 1L to check whether multicore futures are supported or not on the current system.

## Examples

## Use multicore futures
plan(multicore)

## A global variable
a <- 0

## Create future (explicitly)
f <- future({
b <- 3
c <- 2
a * b * c
})

## A multicore future is evaluated in a separate forked
## process.  Changing the value of a global variable
## will not affect the result of the future.
a <- 7
print(a)
#> [1] 7
v <- value(f)
print(v)
#> [1] 0stopifnot(v == 0)