Project

General

Profile

Bug #1137 » input_threads.cc

Test program - Marco Eichelberg, 2024-09-18 13:06

 
#include "dcmtk/config/osconfig.h" /* make sure OS specific
configuration is included first */

#include "dcmtk/dcmdata/dctk.h"
#include <pthread.h>

#ifndef NTHREADS
#define NTHREADS 32
#endif

static void* run(void* arg) {
const char* filename = static_cast<const char*>(arg);

const char utf8_charset[] = "ISO_IR 192";
const E_FileReadMode opt_readMode = ERM_autoDetect;
const E_TransferSyntax opt_ixfer = EXS_Unknown;

DcmFileFormat fileformat;
OFCondition error = fileformat.loadFile(filename, opt_ixfer, EGL_noChange,
DCM_MaxReadLength, opt_readMode);
assert(error.good());
DcmDataset* dataset = fileformat.getDataset();

const size_t opt_conversionFlags = 0;
const OFString toCharset(utf8_charset);

error = dataset->convertCharacterSet(toCharset, opt_conversionFlags);

return nullptr;
}

int main(int argc, char* argv[]) {
if (argc < 2) {
return 1;
}
const char* filename = argv[1];

int rc;
pthread_t threads[NTHREADS];
for (int i = 0; i < NTHREADS; ++i) {
if (rc = pthread_create(threads + i, nullptr, run, (void*)filename)) {
return 1;
}
}

for (int i = 0; i < NTHREADS; ++i) {
if (rc = pthread_join(threads[i], nullptr)) {
return 1;
}
}

return 0;
}
(1-1/2)