Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    C++ Più thread nel solito file

    (Ciao ricordate che sono un neofita!!! )

    Volevo sapere come posso fare che un programma svolga più funzioni contemporaneamente, nel solito codice svolgo diverse operazioni che riesco a fare solo in maniera sequenziali.

    Mi sapete mica indirizzare sul come poter far far più operazione contemporaneamente al mio exe non creando altri exe da richiamare nell'exe principale?

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577

  3. #3
    Su che piattaforma/con che compilatore lavori?
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Ciao MItaly, sono su Windows (trattandosi di file exe), scusate se ho omesso questo di solito sono più preciso. Comunque mi chiedevo una cosa..
    Possibile fare un copia incolla di questo codice:

    https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx
    (grazie a misterx per avermi indicato questa pagina, il codice usato è quello di esempio al suo link)

    e ricevere un errore: error: 'StringCchLength' was not declared in this scope , ho cercato in google questo errore, risultati nessuno.. quindi non so nemmeno se è una carenza di qualche libreria mia o che altro..

    Uso codelite come editor e MingGW come compilatore. Ho provato anche nell'ambiente di sviluppo di Visual c++ ottenendo pure li degli errori. (pazzesco lo so).

    Sono certo che sbaglio io, perchè non è possibile che in una notte non sono riuscito a trovare un solo codice sorgente per studiarmelo che funzionasse... Ho sempre e comunque errori di compilazione.

  5. #5
    Ribadisco, che versione del compilatore? Perché se il tuo compilatore supporta lo standard C++11 puoi usare la libreria standard di multithreading ed evitarti tutte le menate Win32...
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Con Windows, ti consiglio vivamente di usare Visual C++ e non mingw.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Ciao intanto grazie per l'assistenza che mi state dando (non vi abbraccio perchè fa troppo caldo).

    Allora MItaly, il compilatore è l'ultima versione presa qui: http://sourceforge.net/projects/mingw/files/ (c'è l'installer ed ho installato tutte le librerie che ho trovato visto che qualche mb in più non cambia nulla). L'ho installato 6-7 giorni fa.

    Oregon potrei avere grossi vantaggi lavorando direttamente su visual c++? Considera che io al momento vorrei lavorare solo su console, utilizzo codelite perchè essendo la macchina windows in virtuale ho notato una diversità di prestazioni notevoli da visual c++ a codelite, ovviamente se tu mi consigliassi Visual c++ anche pur lavorando in console comincerei. (al massimo aumento le prestazioni della macchina).

    Grazie a tutti.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Installando solamente VC++ (e non tutto Visual Studio completo) non c'è necessità di chissà quali risorse.
    Te lo consiglio perché sicuramente molto più integrato con Windows e senza problematiche di include/librerie da gestire per lo specifico compilatore che vai ad usare.

    Detto questo, non funzionerà certo per magia ... la programmazione multithreading ha le sue precise regole e senza un minimo di preparazione teorica (e di tempo per imparare/provare) il Visual C++ non sarà sicuramente da solo a consentirti di risolvere.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Oregon purtroppo nulla, noto che Visual C++ anche senza studio è davvero troppo pesante per la macchina virtuale che utilizzo, non riesco a dargli più ' potenza' causa altri software in utilizzo quindi devo limitarmi a codelite.

    Comunque ho scoperto che pthread non mi funzionava causa mancanza delle librerie nel compilatore, le ho marcate ed installate e ora il sorgente viene compilato con pthread.

    Il problema che riscontro però è che il codice mi funziona sempre sequenziale..

    codice:
    #include <pthread.h>
    #include <windows.h>
    #include <winuser.h>
    #include <wininet.h>
    #include <iostream>
    #include <fstream>
    #include <ctime>
    #include <string>
    #include <Lmcons.h>
    #include <sstream>
    #include <algorithm>
    
    
    #include <stdio.h>
    
    #include <windowsx.h>
    
    using namespace std;
    
    ////// runner
    
    void *runner(void*)
    {
         while(true){
         cout << "Hello";
        Sleep(100);
        } 
     }
    /////////////////// end runner
    
    
    int main() 
    {
        pthread_t t1;
    
        pthread_create(&t1, NULL, &runner, NULL);
        
    
        void* result;
        pthread_join(t1,&result);
    
                while(true){
         cout << "Bye";
        Sleep(100);
        }       
    
    }

    Per esempio, vorrei che questo codice stampasse: Hello BYE Hello BYE Hello ... invece il risultato è Hello ciclico e a meno che non rimuovo il primo ciclo while (ma in questo caso diventa Hello BYE BYE BYE), nonostante stia utilizzando pthread la parte restante del codice main mi viene ignorata finchè il thread non è concluso.

    Sareste mica così gentili da dare un'occhiata veloce e indirizzarmi sulla retta via? Dove sto sbagliando ancora?

    (ps le librerie incluse sono superflue per questo codice ma dato che le sto utilizzando anche per altro non sono stao li a rimuoverle, che tanto è ininfluente)

    ppss vi ringrazio per la gentilezza, e vi assicuro non voglio la pappa pronta o qualcuno che faccia il lavoro al posto mio ma sono su questo punto da un pò di giorni e non ne vengo fuori...

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

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.