multithreading now should divide jobs evenly without any job missing out

Former-commit-id: 0511065489b0813fef82361b74369040fc2ad887
Former-commit-id: fe23e50fa33d6cf0c5118916bb29669d69bed5b9
This commit is contained in:
Song Minjae
2016-12-23 00:38:21 +09:00
parent 272c1a6ae9
commit 106afb4f49
3 changed files with 31 additions and 12 deletions

View File

@@ -9,6 +9,7 @@ import com.sudoplay.joise.module.*
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.concurrent.ThreadPool
import net.torvald.terrarum.gameactors.ThreadActorUpdate
import net.torvald.terrarum.gameactors.roundInt
import java.util.*
object WorldGenerator {
@@ -687,12 +688,12 @@ object WorldGenerator {
private fun processNoiseLayers(noiseRecords: Array<TaggedJoise>) {
if (Terrarum.MULTITHREAD) {
// set up indices
for (i in 0..Terrarum.CORES - 1) {
for (i in 0..Terrarum.THREADS - 1) {
ThreadPool.map(
i,
ThreadProcessNoiseLayers(
((HEIGHT / Terrarum.CORES) * i),
((HEIGHT / Terrarum.CORES) * i.plus(1)) - 1,
HEIGHT.toFloat().div(Terrarum.THREADS).times(i).roundInt(),
HEIGHT.toFloat().div(Terrarum.THREADS).times(i.plus(1)).roundInt() - 1,
noiseRecords
),
"SampleJoiseMap"