Domanda

Nota: Questo è un ripubblicazione in quanto la domanda è stata considerata non adatto al forum di overflow dello stack e avrebbe dovuto essere pubblicato qui. L'argomento originale è .

Vorrei parlare di multithreading, parallelismo e biblioteche disponibili oggi per raggiungere quel lavoro. Mi chiedo in particolare se esiste una biblioteca di facile utilizzo per raggiungere questo concetto (indicato di seguito) o se dovrebbe essere scritto e quanto sarebbe difficile.

Gli scopi della biblioteca Sto cercando:

  • Accessibile alla maggior parte degli sviluppatori, non solo agli ingegneri o alle persone altamente laureate (questo dovrebbe significare che gli sviluppatori vogliono usarlo, non averne paura)
  • Disponibile per gli sviluppatori C ++
  • portatile (inizia con Windows, Mac OS X e Linux, quindi estendi ai dispositivi mobili)
  • leggero
  • facile da usare (relativo all'accessibilità)

Le caratteristiche più importanti Sto cercando:

  • parallelismo del compito
  • cancellazione delle attività (in modo morbido e brusco)
  • dipendenze delle attività

Le biblioteche correlate esistenti:

  • Blocchi di costruzione di fili : davvero complicata da usare e una licenza piuttosto restrittiva (GPL / commerciale), è l'unica biblioteca che ho trovato e che include tutte le funzionalità che sto cercando
  • Grand Central Dispatch : Attualmente non portatile, non troppo complicato, nessuna cancellazione delle attività (una volta avviata), nessuna dipendenza da attività, nessun supporto per dipendenza automatica (solo manuale)
  • Pfunc : Solo unix, ancora un po 'complicato, nessuna dipendenza da attività, nessuna cancellazione dell'attività
  • Biblioteca parallela di Microsoft Task : Solo piattaforma MS e .NET, nessuna cancellazione difficile, dipendenze delle attività limitate e manuali (un'attività non può svegliarsi più di un'altra attività)
  • OpenCl : Non attualmente disponibile su tutte le piattaforme, non molto di più che una libreria di attività parallele GPU (non così alto come vorrei)
  • OpenMP : ampiamente supportato tranne le versioni gratuite di Visual Studio, nessuna cancellazione delle attività né dipendenze automatiche di attività

Allora quali sono i tuoi pensieri su tutti questi? Perché pensi che ci siano così poche biblioteche corrispondenti a queste esigenze? O mi sono perso una grande biblioteca? E pensi che significherebbe troppo lavoro per ottenere uno? O non abbastanza interessante? Nota che le carenti che ho scritto sono quelle che ho scoperto con alcune ricerche, non sono un esperto di nessuna di queste biblioteche.

Lo scopo finale di questa biblioteca, anche se è piuttosto un sogno, sarebbe programmare in modo parallelizzato con la stessa facilità con cui si fa di solito con la programmazione sequenziale.

Ceylo

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top