Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: lJvRl en 20 Abril 2013, 13:13 pm



Título: Duda con un ejercicio
Publicado por: lJvRl en 20 Abril 2013, 13:13 pm
Hola,

tengo que encontrar que es lo que no va bien en este ejercicio pero no hay manera...

Intuyo que es algo de threads pero no domino casi nada el tema...

Si alguien me pudiera echar un cable, almenos para sber por dnd tirar...

Grcias!!!

Os pongo el ejercicio:

¿Que falla en este código? ¿Y por qué?

#include <QtCore>

#include <stdio.h>
#include <stdlib.h>

const int DataSize = 100000;
const int BufferSize = 8192;
char buffer[BufferSize];

QWaitCondition bufferNotEmpty;
QWaitCondition bufferNotFull;
QMutex mutex;
int numUsedBytes = 0;

class Producer : public QThread
{
public:
void run();
};

void Producer::run()
{
qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));

for (int i = 0; i < DataSize; ++i) {
mutex.lock();
if (numUsedBytes == BufferSize)
bufferNotFull.wait(&mutex);
mutex.unlock();

buffer[i % BufferSize] = "ACGT"[(int)qrand() % 4];

++numUsedBytes;
bufferNotEmpty.wakeAll();
}
}

class Consumer : public QThread
{
public:
void run();
};

void Consumer::run()
{
for (int i = 0; i < DataSize; ++i) {
mutex.lock();
if (numUsedBytes == 0)
bufferNotEmpty.wait(&mutex);
mutex.unlock();

fprintf(stderr, "%c", buffer[i % BufferSize]);

--numUsedBytes;
bufferNotFull.wakeAll();
}
fprintf(stderr, "\n");
}

int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
Producer producer;
Consumer consumer;
producer.start();
consumer.start();
producer.wait();
consumer.wait();
return 0;
}


Título: Re: Duda con un ejercicio
Publicado por: 85 en 20 Abril 2013, 21:54 pm
2 consejos, el código va dentro de las etiquetas de código c++, se encuentran entre las opciones del armado del post.

segundo, fijate algún foro orientado a Qt
http://www.zonaqt.com/foro
http://qt-project.org/forums
http://www.lawebdelprogramador.com/foros/QT/index1.html
http://foro.elhacker.net/sugerencias_y_dudas_sobre_el_foro/nuevo_subforo_qt-t279707.0.html (XD)

o sino a esperar que alguien te ayude en este foro XD
salu2


Título: Re: Duda con un ejercicio
Publicado por: 0xDani en 20 Abril 2013, 22:58 pm
Si coloreas el código, y das algunas indicaciones sobre lo que tienes que hacer en el ejercicio será mucho más probable que alguien te ayude.

Saludos.


Título: Re: Duda con un ejercicio
Publicado por: lJvRl en 21 Abril 2013, 13:29 pm
Por lo que he podido deducir es un tema tipico de multithreads llamado Producer-Consumer.

Pero viendo el codigo, no veo que este mal implementado. Sin embargo, el enunciado me pide qeu encuentre que es lo q esta mal.