Originariamente inviato da giuseppe500
Come documentarmi su questi concetti base?
Puoi cominciare a leggere il capitolo dedicato agli zthreads nel thinking in c++ vol.2: l'infarinatura di base è li. Poi se riesci a procurarti:
Modern Multithreading di Richard h. Craver e Kuo-Chung Tai edito dalla WILEY (credo sia disponibile solo su amazon) dovresti avere un quadro abbastanza completo. Il resto lo puoi trovare cercando Multithreading programming, Concurrency programming o parallel programming su google. Io sono partito da li per leggere articoli, blog e quant'altro.

Ho visto che c'è un proliferare di varie librerie in c++ per la programmazione multicore, è una buona idea abbracciare una di queste librerie ?
Solo il tempo può dirlo. OpenMP, PPL, Tbb sono solo alcune tra le librerie più famose e PPL di Microsoft, che richiede VS2010 e minimo XP Sp3, non è portabile. Per come la vedo io l'adozione di una libreria particolare dipende dal grado di portabilità che vuoi avere e dalla sua documentazione. E comunque è una decisione che si prende in fase di progettazione.

Ed è la stessa cosa della programmazione multithread?
scusa la mia ignoranza(non vorrei dire sfondoni) ma queste librerie si basano sui task e non sui thread, con alcuni pattern gia pronti da implementare riduzione,parallel for sheduler ecc....
Tutto alla fine si basa sui thread e i costrutti che citi sono costruiti su di essi. La differenza è solo l'astrazione e qualche eventuale ottimizzazione nella gestione dei thread che svolgono il lavoro.

Inoltre , non vorrei andare OT , ma come risponderanno i colossi tipo microsoft con visual c o intel a questo cambiamento?
qualcosa ho letto , come l'utilizzo dei for e dei while parallelizzati ,ma non credo che ia la soluzione, soprattutto per il c++
Il C++11 ha introdotto il multithreading nella propria libreria e i compilatori si stanno adeguando. In un paio di blog (che non ricordo) ho visto l'implementazione di un parallel_for utilizzando una std::async() (del nuovo standard). Le librerie multicore citate prima sono nate proprio perché il C++03 non aveva idea di cosa fosse il multithreading.