Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    312

    c++ come realizzare il multithreading

    Salve a tutti,
    mi sono avvicinato da poco al c++ e ho dei dubbi sui thread.
    Mi ricordo che in c ( se non erro) esistono due librerie standard che sono lpthread.h e windows.h. Credo che queste si possano usare anche in c++.... Le mie domande sono:
    1. valgono anche per architetture a 64 bit?
    2. il c++ non ha librerie standard a tal proposito
    3 mi sembra che di non ufficiali ce ne sono a bizzeffe e mi chiedevo quali sono più consigliate e soprattutto se conviene usarle a scapito delle precedenti, qualche consiglio?

  2. #2

    Re: c++ come realizzare il multithreading

    Originariamente inviato da lio.b
    Salve a tutti,
    mi sono avvicinato da poco al c++ e ho dei dubbi sui thread.
    Mi ricordo che in c ( se non erro) esistono due librerie standard che sono lpthread.h e windows.h.
    I pthread sono "nativi" di Linux e compagnia, windows.h ti consente di utilizzare le API di Windows, che, tra le mille altre cose, forniscono anche il supporto per i thread. Nessuna delle due è standard, per quanto riguarda lo standard C i thread potrebbero anche non esistere.
    Credo che queste si possano usare anche in c++.... Le mie domande sono:
    1. valgono anche per architetture a 64 bit?
    Sì.
    2. il c++ non ha librerie standard a tal proposito
    No, come per il C, lo standard C++ non specifica nulla riguardo ai thread
    3 mi sembra che di non ufficiali ce ne sono a bizzeffe e mi chiedevo quali sono più consigliate e soprattutto se conviene usarle a scapito delle precedenti, qualche consiglio?
    Boost.Thread, ben scritta e multipiattaforma (di fatto incapsula le API/syscall native in un layer di astrazione).
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    312
    Grazie,
    molto chiaro... anche per le socket vale lo stesso discorso?
    Un consiglio dato che mi sembri esperto... conviene usare librerie native di linux o implementate da altri come quella che hai citato te?

  4. #4
    Originariamente inviato da lio.b
    Grazie,
    molto chiaro... anche per le socket vale lo stesso discorso?
    Più o meno, se non erro si può usare Boost.asio.
    Un consiglio dato che mi sembri esperto... conviene usare librerie native di linux o implementate da altri come quella che hai citato te?
    Dipende, ma in genere se boost mette a disposizione qualcosa conviene usarlo.
    Nota che non si tratta di implementazioni differenti delle funzionalità, di fatto stai comunque usando i pthread o i thread di Windows, quello che ti fornisce boost è un'incapsulazione in un'interfaccia comune e indipendente dal sistema operativo su cui stai lavorando: non ti importa che sotto ci siano i pthread o i thread di Windows, tu usi comunque degli oggetti boost.thread (che peraltro sono più comodi da usare rispetto alle API, che sono pensate per il C).
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381

    Re: Re: c++ come realizzare il multithreading

    Originariamente inviato da MItaly
    ...lo standard C++ non specifica nulla riguardo ai thread
    In realtà lo standard C++0x prevede il multithreading, però che io sappia solo g++ fornisce un'implementazione sperimentale al riguardo. Quindi alla fine è come non averlo.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    21
    Salve ,

    mi intrometto nella conversazione.

    Ho aperto un post "programmazione parallela" ma leggendo questo argomento penso ke il vostro aiuto possa essermi utile.

    Per la programmazione parallela che librerie mi consigliate ( ambiente Linux) ?

    La OpenMP la conoscete? che mi sapete dire a riguardo?

    grazie
    Pretendo "Done"

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Originariamente inviato da JamesC++
    La OpenMP la conoscete? che mi sapete dire a riguardo?
    La OpenMP è per il calcolo parallelo su architetture a memoria condivisa, che poi alla fine è quello che ci si ritrova in genere sui pc desktop a casa. L'ho usata un po' in passato, ti consente di gestire i thread ad un livello piuttosto alto, sicuramente maggiore rispetto alla pthread; spesso si tratta proprio di semplici direttive #pragma che rendono automatica la creazione di un pool di thread e la loro chiusura secondo il modello fork-join. La documentazione anche non manca, tra l'altro esistono implementazioni per vari sistemi (non solo Linux), anche la Microsoft ha la sua.

    Se ti serve qualcosa per il calcolo parallelo su architetture a memoria distribuita (è improbabile che tu abbia a casa un cluster o simili ( ), ma magari ti ci ritrovi a lavorare da qualche parte) allora ti segnalo la MPI che hanno definito qualche anno fa.

    EDIT: aggiungo comunque che per la OpenMP il gcc su Linux ha già il supporto, non dovrebbe esserci bisogno di installare nulla. Basta compilare con -lgomp -fopenmp.
    every day above ground is a good one

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.