#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "inchi.h" using namespace RDKit; #ifdef RDK_TEST_MULTITHREADED namespace { void runblock(const std::vector &mols,unsigned int count, unsigned int idx, std::vector &inchis, std::vector &keys ){ for(unsigned int j=0;j<50;j++){ for(unsigned int i=0;i void testMultiThread(){ BOOST_LOG(rdErrorLog) << "-------------------------------------" << std::endl; BOOST_LOG(rdErrorLog) << " Test multithreading" << std::endl; std::string fName = getenv("RDBASE"); fName += "/Data/NCI/first_200.props.sdf"; SDMolSupplier suppl(fName); std::cerr<<"reading molecules"< mols; while(!suppl.atEnd()&&mols.size()<100){ ROMol *mol=0; try{ mol=suppl.next(); } catch(...){ continue; } if(!mol) continue; mols.push_back(mol); } std::cerr<<"generating reference data"< inchis; std::vector keys; BOOST_FOREACH(const ROMol *mol,mols){ ExtraInchiReturnValues tmp; std::string inchi=MolToInchi(*mol,tmp); std::string key=InchiToInchiKey(inchi); inchis.push_back(inchi); keys.push_back(key); } boost::thread_group tg; std::cerr<<"processing"<