Nota : si tratta di un reposting in quanto la domanda è stata considerata non adatta al forum Stack Overflow e avrebbe dovuto essere pubblicata qui. L'argomento originale è lì .
Mi piacerebbe parlare di multithreading, parallelismo e librerie disponibili oggi per realizzare quel lavoro. Mi chiedo in particolare se esiste già una libreria facile da usare per ottenere questo concetto (dato sotto), o se dovrebbe essere scritta e quanto difficile sarebbe.
Gli scopi della libreria che sto cercando:
- accessibile alla maggior parte degli sviluppatori, non solo agli ingegneri o ai laureati (questo dovrebbe significare che gli sviluppatori VOGLIONO usarlo, non averne paura)
- disponibile per gli sviluppatori C ++
- portable (inizia con Windows, Mac OS X e Linux, quindi estendi ai dispositivi mobili)
- leggero
- facile da usare (correlato all'accessibilità)
Le funzioni più importanti che sto cercando:
- parallelismo delle attività
- cancellazione delle attività (in modo soft and brusco)
- dipendenze delle attività
Le librerie correlate esistenti :
- Thread Building Blocks : molto complicato da usare, e una licenza piuttosto restrittiva (GPL / commerciale), è l'unica libreria che ho trovato e che include tutte le funzionalità che sto cercando
- Grand Central Dispatch : attualmente non portatile, non troppo complicato, nessuna cancellazione dell'attività (una volta avviata), nessuna dipendenza delle attività, nessun supporto di dipendenza automatico (solo manuale)
- PFunc : solo Unix, ancora un po 'complicato, nessuna dipendenza dall'attività, nessuna cancellazione dell'attività
- Libreria parallela attività Microsoft : solo piattaforma MS e .NET, nessuna dipendenza da annullamento, restrizione e attività manuali rigide (un'attività non può essere attivata più di un'altra attività)
- OpenCL : attualmente non disponibile su tutte le piattaforme, non molto più di una libreria di task parallela GPU (non di livello elevato come vorrei)
- OpenMP : ampiamente supportato tranne le versioni gratuite di Visual Studio, nessuna cancellazione delle attività e dipendenze delle attività automatiche
Quindi cosa ne pensi di tutti questi? Perché pensi che ci siano così poche librerie corrispondenti a questi bisogni? O mi sono perso qualche grande biblioteca? E pensi che significherebbe troppo lavoro per raggiungerne uno? O non abbastanza interessante? Nota che i difetti che ho scritto sono quelli che ho scoperto con alcune ricerche, non sono un esperto in nessuna di queste librerie.
Lo scopo finale di questa libreria, anche se è piuttosto un sogno, sarebbe programmare in modo parallelo come facilmente con la programmazione sequenziale.
Ceylo