Beispiel #1
0
void importDialog::on_btnImportar_clicked()
{
    if(ui->btnImportar->text() != "Importar")
    {
        ui->btnImportar->setEnabled(false);
        switch (ui->stackedWidget->currentIndex()) {
        case 3:
            _createNewGroup();
            break;
        case 4:
        case 5:
            ui->stackedWidget->setCurrentIndex(ui->stackedWidget->currentIndex()+1);
            ui->btnImportar->setEnabled(true);
            break;
        case 6:
            _getRelations();
            break;
        default:
            ui->stackedWidget->setCurrentIndex(ui->stackedWidget->currentIndex()+1);
            break;
        }
    }
    else
    {
        QString s = _empDir+"/Fpago.dbf";
        MainWindow* mainWin = new MainWindow(s);
        ui->btnImportar->setEnabled(false);
        importThread * Thread = new importThread(mainWin , this);
        Thread->setPath(_empDir);
        Thread->setPathConta(_contaDir);

        Thread->setIvaRelation(_ivas);
        Thread->setPaisRelation(_paises);
        Thread->setMonedaPais(_MonedaPais);

        connect(Thread,SIGNAL(finished()),Thread,SLOT(deleteLater()));
        connect(Thread,SIGNAL(finished()),this,SLOT(reEnableImportar()));
        connect(Thread,SIGNAL(Error(QString)),this,SLOT(threadError(QString)));

        progressDialog * d = new progressDialog (this);
        d->setModal(true);
        connect(Thread,SIGNAL(Error(QString)),d,SLOT(error(QString)));
        connect(Thread,SIGNAL(Progress(QString,int)),d,SLOT(Progress(QString,int)));
        connect(Thread,SIGNAL(sizeOfTask(int)),d,SLOT(sizeOfTask(int)));
        connect(Thread,SIGNAL(finished()),d,SLOT(end()));
        connect(d,SIGNAL(stop()),Thread,SLOT(stopMe()));
        d->show();

        Thread->setEmpresa(_empresaFp);
        Thread->setDivisas(_divisas);
        Thread->start();
    }
}
int main() {

    struct philosopher_t *p0_t, *p1_t, *p2_t, *p3_t, *p4_t;
    p0_t = malloc(sizeof(struct philosopher_t));
    p1_t = malloc(sizeof(struct philosopher_t));
    p2_t = malloc(sizeof(struct philosopher_t));
    p3_t = malloc(sizeof(struct philosopher_t));
    p4_t = malloc(sizeof(struct philosopher_t));

    p0_t->nr = 0;
    p0_t->left = 0;
    p0_t->right = 1;

    p1_t->nr = 1;
    p1_t->left = 1;
    p1_t->right = 2;

    p2_t->nr = 2;
    p2_t->left = 2;
    p2_t->right = 3;

    p3_t->nr = 3;
    p3_t->left = 3;
    p3_t->right = 4;

    p4_t->nr = 4;
    p4_t->left = 4;
    p4_t->right = 0;

    if (pthread_create(&philosopher[p0_t->nr], NULL, philosopher_deadlock, p0_t)) {
        threadError("Error while creating philosopher %d\n", p0_t->nr);
    }
    if (pthread_create(&philosopher[p1_t->nr], NULL, philosopher_deadlock, p1_t)) {
        threadError("Error while creating philosopher %d\n", p1_t->nr);
    }
    if (pthread_create(&philosopher[p2_t->nr], NULL, philosopher_deadlock, p2_t)) {
        threadError("Error while creating philosopher %d\n", p2_t->nr);
    }
    if (pthread_create(&philosopher[p3_t->nr], NULL, philosopher_deadlock, p3_t)) {
        threadError("Error while creating philosopher %d\n", p4_t->nr);
    }
    if (pthread_create(&philosopher[p4_t->nr], NULL, philosopher_deadlock, p4_t)) {
        threadError("Error while creating philosopher %d\n", p4_t->nr);
    }

    if (pthread_join(philosopher[p0_t->nr], NULL)) {
        threadError("Error while ending philosopher %d\n", p0_t->nr);
    }
    if (pthread_join(philosopher[p1_t->nr], NULL)) {
        threadError("Error while ending philosopher %d\n", p1_t->nr);
    }
    if (pthread_join(philosopher[p2_t->nr], NULL)) {
        threadError("Error while ending philosopher %d\n", p2_t->nr);
    }
    if (pthread_join(philosopher[p3_t->nr], NULL)) {
        threadError("Error while ending philosopher %d\n", p3_t->nr);
    }
    if (pthread_join(philosopher[p4_t->nr], NULL)) {
        threadError("Error while ending philosopher %d\n", p4_t->nr);
    }

    return 0;
}
Beispiel #3
0
void SnpBuffer::update(int posStart, int posEnd, int bins, int trackMin, int trackMax, bool synteny, bool light, int gaps)
{
	if ( ! alignment )
	{
		return;
	}
	
	if ( updating )
	{
		//if ( posStart != snpDataNew->getPosStart() || posEnd != snpDataNew->getPosEnd() )
		{
			//printf("queuing:\t%d\t[%d -\t%d]\t%s\n", bins, posStart, posEnd, synteny ? "syn" : "snp");
			posStartQueue = posStart;
			posEndQueue = posEnd;
			binsQueue = bins;
			trackMinQueue = trackMin;
			trackMaxQueue = trackMax;
			syntenyQueue = synteny;
			lightQueue = light;
			gapsQueue = gaps;
			updateNeeded = true;
		}
		
		return;
	}
	
	//printf("updating:\t%d\t[%d -\t%d]\t%s\n", bins, posStart, posEnd, synteny ? "syn" : "snp");
	
	if ( posEnd < 0 )
	{
		return;
	}
	
	if ( snpDataNew == 0 || snpDataNew->getBins() != bins )
	{
		// reallocate
		
		if ( snpDataNew != 0 )
		{
			delete snpDataNew;
		}
		
		snpDataNew = new SnpData(bins, trackCount);
	}
	
	snpDataNew->setWindow(posStart, posEnd);
	snpDataNew->setTracks(trackMin, trackMax);
	snpDataNew->setSynteny(synteny);
	snpDataNew->setLightColors(light);
	snpDataNew->setShowGaps(gaps);
	snpDataNew->setFilters
	(
		alignment->getFilters(),
		alignment->getFiltersScale(),
		alignment->getFilterPass(),
		alignment->getFilterPassScale()
	);
	
	int radius = (posEnd - posStart + 1) / bins / 6 - 1;
	
	if ( radius > 3 )
	{
		radius = 3;
	}
	
	if ( radius < 0 )
	{
		radius = 0;
	}
	
	bool async = true;
	
	SnpWorker* worker = new SnpWorker
	(
	 alignment,
	 snpDataNew,
	 idByTrack,
	 mutex,
	 radius,
	 light ? snpPaletteLight : snpPaletteDark,
	 &syntenyPalette
	 );
	
	if ( async )
	{
		thread = new QThread;
		
		worker->moveToThread(thread);
		connect(worker, SIGNAL(error(QString)), this, SLOT(threadError(QString)));
		connect(thread, SIGNAL(started()), worker, SLOT(process()));
		connect(worker, SIGNAL(finished()), thread, SLOT(quit()));
		connect(worker, SIGNAL(finished()), worker, SLOT(deleteLater()));
		connect(worker, SIGNAL(finished()), this, SLOT(updateFinished()));
		connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
		thread->start();
/*
		worker->moveToThread(thread);
		
		//connect(worker, SIGNAL(error(QString)), this, SLOT(threadError(QString)));
		connect(thread, SIGNAL(started()), worker, SLOT(process()));
		connect(worker, SIGNAL(finished()), thread, SLOT(quit()));
		connect(worker, SIGNAL(finished()), this, SLOT(updateFinished()));
		connect(worker, SIGNAL(finished()), worker, SLOT(deleteLater()));
		connect(worker, SIGNAL(finished()), thread, SLOT(deleteLater()));
		
		thread->start();
*/		
		updating = true;
		updateNeeded = false;
	}
	else
	{
		worker->process();
		updating = true;
		updateNeeded = false;
		updateFinished();
		delete worker;
	}
}