Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [C++] MultiThread

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    32

    [C++] MultiThread

    Salve a tutti ragazzi , ho un problema in C++ con la funzione _beginthread:Comincio subito col dirvi che questo problema mi viene solamente quando utilizzo le classi.
    codice:
    void Client_s::Thread()
    {    _beginthread((void (__cdecl*)(void*))Thread,0,0);}
    Con questo codice , mi dava problema : "non si può convertire da overloaded-function a'void (__cdecl *)(void *)"Quindi ho provato con questo :
    codice:
    _beginthread(this->Thread,0,0);
    Ma mi veniva dato un altro errore : &namespace::Classe::Thread': chiamata di funzione senza elenco di argomenti; utilizzare 'namespace::classe::Thread' per creare un puntatore al membro.Avete soluzioni? Grazie a tutti in anticipo

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Per i thread devi impostare un metodo di classe statico e usare quello.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    32
    Scusa, non ho capito puoi farmi un esempio?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    32
    Grazie, ma ho risolto con questo :
    codice:
    auto Thread = std::async(&namepsace::Class::Thread, this, 0);

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Questa è un'altra storia ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Quote Originariamente inviata da return Visualizza il messaggio
    Grazie, ma ho risolto con questo :
    codice:
    auto Thread = std::async(&namepsace::Class::Thread, this, 0);
    Occhio che (1) std::async non restituisce un thread, ma un std::future, e (2) se vuoi essere sicuro che venga effettivamente eseguito in un thread separato devi specificare il flag std::launch::async, altrimenti il runtime è libero di tenerlo come "deferred" ed eseguirlo effettivamente solo quando vai a chiedere al future che hai ottenuto il risultato dell'operazione (cosa che è il default di g++, per esempio).

    In generale, la gestione "a future" nella mia esprienza è una delle opzioni migliori per gestire operazioni parallele, ma è un po' diversa rispetto ai thread "raw", ti consiglio di studiarteli per bene prima di usarli.
    Amaro C++, il gusto pieno dell'undefined behavior.

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.