## not necessarily reproducible examples.

library(parallel)


cl <- makeCluster(getOption("cl.cores", 2))

clusterApply(cl, 1:2, get("+"), 3)
xx <- 1
clusterExport(cl, "xx")
clusterCall(cl, function(y) xx + y, 2)

## Use clusterMap like an mapply example
clusterMap(cl, function(x,y) seq_len(x) + y,
          c(a =  1, b = 2, c = 3), c(A = 10, B = 0, C = -10))


parSapply(cl, 1:20, get("+"), 3)

## PR14898
parSapply(cl, 1, identity)

if(require(boot, quietly = TRUE)) {
    set.seed(11)
    ## A bootstrapping example, which can be done in many ways:
    clusterEvalQ(cl, {
        ## set up each worker.  Could also use clusterExport()
        library(boot)
        cd4.rg <- function(data, mle) MASS::mvrnorm(nrow(data), mle$m, mle$v)
        cd4.mle <- list(m = colMeans(cd4), v = var(cd4))
        NULL
    })
    res <- clusterEvalQ(cl, boot(cd4, corr, R = 100,
                                 sim = "parametric", ran.gen = cd4.rg, mle = cd4.mle))
    cd4.boot <- do.call(c, res)
    print(boot.ci(cd4.boot,  type = c("norm", "basic", "perc"),
                  conf = 0.9, h = atanh, hinv = tanh))
}
stopCluster(cl)