I am trying to optimize some calculations using the package multicore. I have a function that returns three variables of interest in a list. Normally I would do a for loop over (i in 1:n) but the calculations are independent so I could use mclapply(1:n, loopbody(i)). loopbody <- function(i) { waveletsmooth(resampled[, i]) } mclapply(1:n, loopbody, mc.preschedule=FALSE) Except that I am really not interested in returning a list of n lists each containing the three variables. I would like to have three variables each containing the data in n columns. base = smooth = matrix(0, l, n) loopbody <- function(i) { tmp <- waveletsmooth(resampled[, i]); base[, i] <<- tmp[["basecorrect"]]; smooth[, i] <<- tmp[["nobasecorrect"]]; } mclapply(1:n, loopbody, mc.preschedule=FALSE); Frustratingly, this does not work, as is obvious from help(multicore), since the child threads use copy-on-write on the memory inherited from the master. So my question is: How do I allow the child threads to work on the variables base and smooth as shared memory, so that I don't have to use sendMaster or similar functions that copy the results? -- Med venlig hilsen Rune Schjellerup Philosof