PThread vs boost :: thread?

N’ayant aucune expérience de threading dans le passé, quelle technique de threading en C ++ sera la plus simple pour un débutant? boost :: thread ou pthreads?

Optez pour boost :: thread. Il est étroitement lié au travail sur les prochains threads standard C ++ , et l’interface est assez facile à utiliser et idiomatique pour C ++ (RAII au lieu de la gestion manuelle des ressources).

Je vais dans la direction opposée à celle de tous les autres – apprenez (ou au moins, familiarisez-vous avec ce qui est disponible dans) les pthreads.

Etant donné que boost n’est qu’un simple emballage autour des pthreads (sur les plateformes posix), il est utile de savoir ce qui se passe en dessous. En essayant d’être générique, boost laisse les fonctionnalités spécifiques à la plate-forme non encapsulées. Pour y arriver, vous devez utiliser les appels native_handle (). Pour pouvoir utiliser les appels native_handle (), vous devez connaître les offres de la plate-forme.

Pensez-y comme des sockets de courant. Il existe des dizaines de classes de socket et de frameworks. Mais finalement, ils enveloppent l’API de socket de la plateforme sous-jacente. Votre compréhension est toujours plus riche en le sachant – et en sachant de quelle manière vos abstractions de classe pourraient avoir des défauts.

boost :: thread est une abstraction très agréable et portable. Je voudrais certainement l’utiliser, mais aussi apprendre l’API de threads native, comme pthreads, afin que vous sachiez comment le threading fonctionne sur votre plate-forme.

Boost.Thread utilise le concept de locking RAII, qui sécurise davantage les exceptions et permet d’éviter des bugs tels que l’oubli de la publication d’un mutex.

Je dirais qu’ils sont presque égaux en difficulté. La seule grande différence que je vois est que les PThreads sont assez largement supportés (si vous êtes concerné par le portage multi-plateforme). Une autre est qu’il y a eu pas mal de bons livres sur PThreads, bien que presque tous les concepts soient traduits de manière à booster :: thread, et de nombreuses autres bibliothèques de threads.