2010-08-24 14 views
5

Non sono ancora un utente Boost. Sto comunque pensando di entrarci il prima possibile. Tuttavia sono poco preoccupato per Boost, e le probabili future collisioni o differenze con il prossimo C++ 0x. (Forse non è un vero problema, ma per esempio trovo la sintassi di boost aghdas piuttosto brutta, BOOST_FOREACH aggressivo per gli occhi, e altre solo visioni personali estetiche).Boost.Thread o solo :: thread?

Sono davvero interessato al TR2, che sembra essere implementato dalle librerie Boost.Thread e just::thread. Entrambi sembrano scritti e mantenuti da Anthony Williams.

Ma proprio :: thread afferma di essere strettamente conforme al TR2.

Volevo sapere se qualcuno di voi mi avrebbe indicato di usare l'uno o l'altro. just :: thread non è gratuito, ma se fosse davvero proprio come TR2, sono tentato.

Qualche idea?

risposta

5

Attualmente sto sperimentando, su Linux, con il boost, solo :: librerie di thread e le cosiddette funzionalità "sperimentali" di C++ Ox del compilatore gcc g ++ 4.5. Per quanto riguarda la discussione ho la possibilità di premere Ho trovato il codice che ho scritto per just :: thread e il compilatore g ++ per essere compatibile al 100%. Le librerie boost (1.43) sono marcatamente non compatibili con le prime due. Tuttavia, per il mio codice di produzione uso le librerie di boost.

La collisione di nomi non dovrebbe essere un problema con l'uso corretto e giudizioso degli spazi dei nomi disponibili nei compilatori boost, just :: thread e g ++. Non ho problemi ad usare just :: thread con le funzionalità g ++ di C++ Ox; in effetti è raccomandato da just :: thread che usa queste funzionalità, come i modelli variadic.

+0

Cosa intendi per "librerie di boost (1.43) sono marcatamente non compatibili con le prime due". Di che tipo di compatibilità stai parlando? –

+0

@Stephane: 'codice che ho scritto per just :: thread e il compilatore g ++ per essere compatibili al 100%'; codice compatibile nel senso che il codice scritto che compila e collega correttamente per just :: thread in C++ Ox si compila e si collega correttamente usando solo C++ Ox g ++ 4.5 senza modifiche. Non sono stato in grado di ottenere questa compatibilità con le librerie di boost. – Sam

+0

@thanx Sam. Sto ancora esitando, ma questo è un buon punto per just :: thread. –

4

Penso sia troppo presto per dire che una libreria è "proprio come TR2". Il TR2 verrà rilasciato dopo C++ 0x, che non è stato ancora rilasciato.

Tuttavia, la libreria Boost.Thread sostiene anche di seguire lo sviluppo nel comitato di standardizzazione.

Preferirei qualsiasi libreria Boost sul suo "originale", perché Boost è impegnato per l'alta qualità e la comunità Boost gestisce le librerie in modo collaborativo, al contrario di una lib privata che è appena successo migrare per aumentare.

Non devi avere paura delle discussioni sui nomi, poiché ciò che è attualmente nello spazio dei nomi boost:: rimarrà nello spazio dei nomi e tutte le cose TR2 andranno probabilmente a std::tr2::.

-1

miglior consiglio in questo momento - nessuno dei :-) sopra

A meno che non si dispone di un bisogno assolutamente urgente, potrai risparmiare un sacco di tempo e di dolore da solo in attesa fino a C++ 0x deposita primo , che richiederà circa 2 anni. Se qualcuno ti sta chiedendo di andare a caccia di obiettivi in ​​movimento: chiedi prima di vedere i soldi :-) e un grosso fermo :-))

Come in molti altri casi, è meglio chiedersi prima "quali sono i miei bisogni effettivi" ? Se sta imparando lo sviluppo di multi-threading, passare del tempo con C# o Java sarà molto più facile per i nervi. Se hai bisogno di iniziare a sviluppare un sistema a livello di produzione, allora conosci già la tua piattaforma di destinazione e il meglio che puoi fare è attaccare con qualunque cosa è una lib di prova per multi-threading sulla tua piattaforma di destinazione e ha pieno supporto per il debugger . Giusto per ripetere ancora: il pieno supporto e integrazione del debugger è ciò che decide la quaility della tua vita nel thread land.

Se tocchi Boost, assicurati di avere abbastanza tempo per assicurarti che non abbia dipendenze da una dozzina di altri file boost-qualcosa e poi un'altra dozzina ... a meno che non sei afficionado cioè :-) Se tocchi una bibliografia che pretende che il rilevamento automatico del Dedlock sia preparato a pagare nei cicli della CPU e gestire le interferenze potenzialmente indesiderate.

Problemi correlati