[quote=ViniGodoy][quote=Longino]O problema de programadores C e C++ é que eles pararam no tempo. Pensam que “programa rápido” é aquele que vai de 1 a 1 bilhão em nanosegundos.
Não é assim que se mede performance em um sistema com alta concorrência.[/quote]
Quem foi que parou no tempo?
Existem frameworks inteiros só para lidar com concorrência, e outros que tem concorrência em seu núcleo, tais como boost::thread, Qt, e ZeroMQ.
Existem até ferramentas para multithreading altamente paralelo sem uso de locks, integração com linguagens funcionais, entre outras coisas.
Aliás, muito antes de aparecer em outras linguagens, já se fazia processamento paralelo com Cuda e OpenCL, em processadores de placas de vídeo com mais de 200 núcleos.
Se quiser fazer trolling, Longino, pelo menos informe-se antes.[/quote]
Tenho trabalhado com a QtConcurrent. Atende bem os problemas que enfrento no dia a dia.
http://developer.qt.nokia.com/doc/qt-4.8/qtconcurrent.html
O exemplo abaixo mostra como gerar thumbnails de várias imagens repartindo o processamento em várias threads
[code] #include
#include
#include
#include
#include
#include <qtconcurrentmap.h>
#ifndef QT_NO_CONCURRENT
QImage scale(const QImage &image)
{
qDebug() << “Scaling image in thread” << QThread::currentThread();
return image.scaled(QSize(100, 100), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
const int imageCount = 20;
// Create a list containing imageCount images.
QList<QImage> images;
for (int i = 0; i < imageCount; ++i)
images.append(QImage(1600, 1200, QImage::Format_ARGB32_Premultiplied));
// Use QtConcurrentBlocking::mapped to apply the scale function to all the
// images in the list.
QList<QImage> thumbnails = QtConcurrent::blockingMapped(images, scale);
return 0;
}
#else
int main()
{
qDebug() << “Qt Concurrent is not yet supported on this platform”;
}
#endif[/code]