in src/main/java/org/apache/datasketches/characterization/theta/concurrent/ConcurrentThetaMultithreadedSpeedProfile.java [61:117]
public void configure() {
//Configure Sketches
sharedLgK = Integer.parseInt(prop.mustGet("LgK"));
localLgK = Integer.parseInt(prop.mustGet("CONCURRENT_THETA_localLgK"));
ordered = Boolean.parseBoolean(prop.mustGet("CONCURRENT_THETA_ordered"));
offHeap = Boolean.parseBoolean(prop.mustGet("CONCURRENT_THETA_offHeap"));
poolThreads = Integer.parseInt(prop.mustGet("CONCURRENT_THETA_poolThreads"));
maxConcurrencyError = Double.parseDouble(prop.mustGet("CONCURRENT_THETA_maxConcurrencyError"));
numReaderThreads = Integer.parseInt(prop.mustGet("CONCURRENT_THETA_numReaders"));
numWriterThreads = Integer.parseInt(prop.mustGet("CONCURRENT_THETA_numWriters"));
writesRatio = Double.parseDouble(prop.mustGet("CONCURRENT_THETA_writersRatio"));
isThreadSafe = Boolean.parseBoolean(prop.mustGet("CONCURRENT_THETA_ThreadSafe"));
final int maxSharedUpdateBytes = Sketch.getMaxUpdateSketchBytes(1 << sharedLgK);
if (offHeap) {
wmem = WritableMemory.allocateDirect(maxSharedUpdateBytes);
} else {
wmem = null; //WritableMemory.allocate(maxSharedUpdateBytes);
}
final UpdateSketchBuilder bldr = configureBuilder();
//must build shared first
sharedSketch = bldr.buildShared(wmem);
if (!isThreadSafe) {
sharedSketch = bldr.build();
lock = new ReentrantReadWriteLock();
}
ctx = new ConcurrentTestContext();
for (int i = 0; i < numWriterThreads; i++) {
final WriterThread writer;
if (writesRatio != 0) {
if (isThreadSafe) {
writer = new ReaderWriterThread(bldr, i, writesRatio);
} else {
writer = new LockBasedReaderWriterThread(i, writesRatio);
}
} else {
if (isThreadSafe) {
writer = new WriterThread(bldr, i);
} else {
writer = new LockBasedWriterThread(i);
}
}
ctx.addWriterThread(writer);
}
for (int i = 0; i < numReaderThreads; i++) {
final ReaderThread reader;
if (isThreadSafe) {
reader = new BackgroundReaderThread();
} else {
reader = new LockBasedBackgroundReaderThread();
}
ctx.addReaderThread(reader);
}
ctx.startThreads();
}