Ejemplo n.º 1
0
void task(VP_INT exinf)
{
	_toppers_cxxrt_reset_specific();	// タスクの再起動を可能にするための初期化処理
	ID		tskid = ID(exinf);
	fork* left	= p_fork[(tskid - 1) % 5];
	fork* right = p_fork[(tskid - 1 + 4) % 5];
	philosopher phil(tskid, left, right);
	phil.run();
}
Ejemplo n.º 2
0
int main(int argc, char* argv[])
{
    boost::thread thrd_chef(&chef);
    phil p[] = { phil(0), phil(1), phil(2), phil(3), phil(4) };
    boost::thread thrd_phil0(thread_adapter(&phil::do_thread, &p[0]));
    boost::thread thrd_phil1(thread_adapter(&phil::do_thread, &p[1]));
    boost::thread thrd_phil2(thread_adapter(&phil::do_thread, &p[2]));
    boost::thread thrd_phil3(thread_adapter(&phil::do_thread, &p[3]));
    boost::thread thrd_phil4(thread_adapter(&phil::do_thread, &p[4]));

    thrd_chef.join();
    thrd_phil0.join();
    thrd_phil1.join();
    thrd_phil2.join();
    thrd_phil3.join();
    thrd_phil4.join();

    return 0;
}
Ejemplo n.º 3
0
void UserPresetWindow::buttonClicked (Button* buttonThatWasClicked)
{
    //[UserbuttonClicked_Pre]
    //[/UserbuttonClicked_Pre]

    if (buttonThatWasClicked == copyButton)
    {
        //[UserButtonCode_copyButton] -- add your button handler code here..

		PresetItem *selected = dynamic_cast<PresetItem *>(presetList->getSelectedItem(0));

		if(selected)
		{
			AlertWindow win(L"Copy Preset",
							L"Enter a name for the duplicate preset:",
							AlertWindow::NoIcon);

			win.addTextEditor(L"presetName", L"");

			win.addButton(L"Cancel", 0);
			win.addButton(L"Ok", 1, KeyPress(KeyPress::returnKey));

			if(win.runModalLoop())
			{
				String tempstr;
				File srcPreset = selected->getFile();

				tempstr = win.getTextEditorContents(L"presetName");
				tempstr << L".fxp";

				srcPreset.copyFileTo(srcPreset.getParentDirectory().getChildFile(tempstr));

				//A bit hacky, but treeHasChanged() doesn't seem to do anything...
				selected->getParentItem()->itemOpennessChanged(true);
				presetList->repaint();

				//treeRoot.treeHasChanged();
			}
		}

        //[/UserButtonCode_copyButton]
    }
    else if (buttonThatWasClicked == removeButton)
    {
        //[UserButtonCode_removeButton] -- add your button handler code here..

		PresetItem *selected = dynamic_cast<PresetItem *>(presetList->getSelectedItem(0));

		if(selected)
		{
			File parentDir = selected->getFile().getParentDirectory();

			if(!selected->getFile().deleteFile())
			{
				AlertWindow::showMessageBoxAsync(AlertWindow::WarningIcon,
												 L"Preset Deletion Error",
												 L"Could not delete preset from the filesystem. Check your permissions.");
			}
			else
			{
				//If that plugin's directory is now empty, delete it too.
				if(!parentDir.getNumberOfChildFiles(File::findFilesAndDirectories))
					parentDir.deleteFile();

				treeRoot.itemOpennessChanged(true);
				presetList->repaint();
			}
		}

        //[/UserButtonCode_removeButton]
    }
    else if (buttonThatWasClicked == importButton)
    {
        //[UserButtonCode_importButton] -- add your button handler code here..

		int i;
		StringArray plugins;

		for(i=0;i<knownPluginList->getNumTypes();++i)
			plugins.add(knownPluginList->getType(i)->name);

		//First get the user to select which plugin the preset is for.
		AlertWindow whichPlugin(L"Import Preset",
								L"Select which plugin this preset is intended for:",
								AlertWindow::NoIcon);

		whichPlugin.addComboBox(L"plugins", plugins);
		whichPlugin.addButton(L"Cancel", 0);
		whichPlugin.addButton(L"Ok", 1, KeyPress(KeyPress::returnKey));

		if(whichPlugin.runModalLoop())
		{
			FileChooser phil(L"Import preset",
							 File::nonexistent,
							 L"*.fxp");

			if(phil.browseForFileToOpen())
			{
				String pluginName = whichPlugin.getComboBoxComponent(L"plugins")->getText();
				File presetDir = File::getSpecialLocation(File::userApplicationDataDirectory).getChildFile(L"Pedalboard2").getChildFile(L"presets");
				File pluginDir = presetDir.getChildFile(pluginName);
				File srcPreset = phil.getResult();

				if(!pluginDir.exists())
				{
					if(!pluginDir.createDirectory())
					{
						AlertWindow::showMessageBoxAsync(AlertWindow::WarningIcon,
														 L"Preset Import Error",
														 L"Could not create a directory for this plugin. Check your permissions.");
					}

					phil.getResult().copyFileTo(pluginDir.getChildFile(srcPreset.getFileName()));

					treeRoot.itemOpennessChanged(true);
					presetList->repaint();
				}
			}
		}

        //[/UserButtonCode_importButton]
    }
    else if (buttonThatWasClicked == exportButton)
    {
        //[UserButtonCode_exportButton] -- add your button handler code here..

		PresetItem *selected = dynamic_cast<PresetItem *>(presetList->getSelectedItem(0));

		if(selected)
		{
			FileChooser phil(L"Export preset",
							 File::nonexistent,
							 L"*.fxp");

			if(phil.browseForFileToSave(true))
				selected->getFile().copyFileTo(phil.getResult().withFileExtension(L"fxp"));
		}

        //[/UserButtonCode_exportButton]
    }
    else if (buttonThatWasClicked == renameButton)
    {
        //[UserButtonCode_renameButton] -- add your button handler code here..

		PresetItem *selected = dynamic_cast<PresetItem *>(presetList->getSelectedItem(0));

		if(selected)
		{
			AlertWindow win(L"Rename Preset",
							L"Enter a new name for the selected preset:",
							AlertWindow::NoIcon);

			win.addTextEditor(L"presetName", L"");

			win.addButton(L"Cancel", 0);
			win.addButton(L"Ok", 1, KeyPress(KeyPress::returnKey));

			if(win.runModalLoop())
			{
				File newFile = selected->getFile().getParentDirectory();

				newFile = newFile.getChildFile(win.getTextEditorContents(L"presetName")).withFileExtension(L"fxp");

				selected->getFile().moveFileTo(newFile);

				selected->getParentItem()->itemOpennessChanged(true);
				presetList->repaint();
			}
		}

        //[/UserButtonCode_renameButton]
    }

    //[UserbuttonClicked_Post]
    //[/UserbuttonClicked_Post]
}
Ejemplo n.º 4
0
void Scanner::run()
{
  std::vector<double> kernelWidth;
  std::vector<double> windowSize;
  std::vector<double> peakThreshold;
  std::vector<double> floorThreshold;
  std::vector<int> signalFindingIterations;
  std::vector<double> reclusterThreshold;
  std::ostringstream dispstr;
  dispstr << "--------------------SCAN PARAMETERS:\n--------------------\n\n";
  
  //----- Read configuration file -----
  std::ifstream phil(m_configFile);
  if(!(phil.is_open())){
    hide();
    return;
  }
  std::string line;
  boost::char_separator<char> sep(":");
  while(getline(phil,line)){
    dispstr << line << "\n";
    boost::tokenizer< boost::char_separator<char> > tokens(line,sep);
    boost::tokenizer< boost::char_separator<char> >::iterator tit = tokens.begin();
    std::string param = *tit;
    tit++;
    boost::char_separator<char> sep2(",");
    boost::tokenizer< boost::char_separator<char> > tokens2(*tit,sep2);
    if(param.compare("kernel width") == 0){
      for(const auto& t2 : tokens2) kernelWidth.push_back(boost::lexical_cast<double>(t2));
    }
    else if(param.compare("window size") == 0){
      for(const auto& t2 : tokens2) windowSize.push_back(boost::lexical_cast<double>(t2));
    }
    else if(param.compare("peak threshold") == 0){
      for(const auto& t2 : tokens2) peakThreshold.push_back(boost::lexical_cast<double>(t2));
    }
    else if(param.compare("floor threshold") == 0){
      for(const auto& t2 : tokens2) floorThreshold.push_back(boost::lexical_cast<double>(t2));
    }
    else if(param.compare("signal finding iterations") == 0){
      for(const auto& t2 : tokens2) signalFindingIterations.push_back(boost::lexical_cast<int>(t2));
    }
    else if(param.compare("recluster threshold") == 0){
      for(const auto& t2 : tokens2) reclusterThreshold.push_back(boost::lexical_cast<double>(t2));
    }
  }
  phil.close();
  //-----------------------------------

  dispstr << "\n--------------------\nINPUT FILES:\n--------------------\n\n";

  //----- Load images -----
  int tot_tasks = 0;
  std::vector<int> series_ntasks;
  std::vector< std::vector<ImRecord*>* > templateRecords;
  m_fileManager = new FileManager();
  for(std::vector<std::string>::iterator fit = m_inputFiles.begin(); fit != m_inputFiles.end(); fit++){
    dispstr << *fit << "\n";
    ImageAnalysisToolkit tmp;
    std::vector<ImRecord*>* recs = new std::vector<ImRecord*>();
    recs->clear();
    FileManager::input_file infile = FileConverter::read(m_fileManager,&tmp,recs,*fit,nia::niaVersion);
    templateRecords.push_back(recs);
    int itasks = infile.np * infile.nt;
    series_ntasks.push_back(itasks);
    tot_tasks += itasks;
    m_fileManager->addInputFile(infile);
  }

  m_textBuffer->set_text(dispstr.str());
  show_all_children();

  tot_tasks *= kernelWidth.size()*windowSize.size()*peakThreshold.size()*floorThreshold.size()*reclusterThreshold.size()*signalFindingIterations.size();
  m_progressWindow.launch(tot_tasks);
  m_fileManager->reset();
  ImSeries* m_data = m_fileManager->loadNext();
  int seriesID = 0;
  int scanID = 0;
  while(m_data){
    for(std::vector<double>::iterator kwit = kernelWidth.begin(); kwit != kernelWidth.end(); kwit++){
      for(std::vector<double>::iterator wsit = windowSize.begin(); wsit != windowSize.end(); wsit++){
	for(std::vector<double>::iterator ptit = peakThreshold.begin(); ptit != peakThreshold.end(); ptit++){
	  for(std::vector<double>::iterator ftit = floorThreshold.begin(); ftit != floorThreshold.end(); ftit++){
	    for(std::vector<double>::iterator rtit = reclusterThreshold.begin(); rtit != reclusterThreshold.end(); rtit++){
	      for(std::vector<int>::iterator sfit = signalFindingIterations.begin(); sfit != signalFindingIterations.end(); sfit++){
		ImageAnalysisToolkit* toolkit = new ImageAnalysisToolkit();
		toolkit->setSaturationThreshold(65534);
		toolkit->setKernelWidth(*kwit);
		toolkit->setLocalWindow(*wsit);
		toolkit->setPeakThreshold(*ptit);
		toolkit->setFloorThreshold(*ftit);
		toolkit->setReclusterThreshold(*rtit);
		toolkit->setMaxSignalFindingIterations(*sfit);
		std::vector<ImRecord*>* scanRecs = new std::vector<ImRecord*>();
		scanRecs->clear();
		for(int i = 0; i < series_ntasks[seriesID]; i++) scanRecs->push_back(templateRecords[seriesID]->at(i)->emptyCopy());
		m_records.push_back(scanRecs);
		for(int i = 0; i < scanRecs->at(0)->nSynapseCollections(); i++) toolkit->addSynapseDefinition(scanRecs->at(0)->getSynapseCollection(i)->emptyCopy());
		m_ntasks.push_back(series_ntasks[seriesID]);
		for(int ps = 0; ps < m_data->npos(); ps++){
		  for(int tm = 0; tm < m_data->nt(); tm++){
		    while(m_activeThreads == m_maxThreads) boost::this_thread::sleep(boost::posix_time::millisec(60000));
		    m_mtx.lock();
		    m_threadpool.create_thread(boost::bind(&Scanner::run_analysis, this, m_data, toolkit, scanID, ps, tm, seriesID));
		    m_activeThreads++;
		    boost::this_thread::sleep(boost::posix_time::millisec(1000));
		    m_mtx.unlock();
		  }
		}
		boost::this_thread::sleep(boost::posix_time::millisec(1000));
		scanID++;
	      }
	    }
	  }
	}
      }
    }
    m_threadpool.join_all();
    nia::nout << "Finished parameter scan for sample " << m_fileManager->getName(seriesID) << "\n";
    delete m_data;
    m_data = m_fileManager->loadNext();
    seriesID++;
  }
  delete m_fileManager;
  hide();
  //-----------------------
}