Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [C] multitasking

  1. #1

    [C] multitasking

    Buon giorno,
    sto scrivendo un programma che consenta ad un utente di elaborare del testo e che ogni tot di tempo(30 secondi) invia un keep alive ad un server locale. Per evitare di tenere sempre connesso il server con il pc la connessione avviene solo al momento dell'invio del keep alive e termina subito dopo quando il server risponde di averlo ricevuto. Attualmente il programma invia questo keep alive ogni volta che l'utente digita invio, ovvero subito dopo aver ricevuto un input dall'utente, quello che vorrei fare è rendere l'editing del testo e l'invio del keep alive indipendenti l'uno dall'altro ovvero fare in modo che il segnale venga inviato al server ogni tot secondi anche se l'utente non digita invio...
    Come potrei fare?

    Grazie a tutti in anticipo!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Utilizza un apposito thread che si attivi ogni 30 sec
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Ok, grazie. Come si fa? Sarebbe multipiattaforma?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Sì, i thread li puoi utilizzare praticamente ovunque. Comunque, l'argomento è vasto, cerca documentazione su

    multithreading
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Grazie, ho creato un thread che contiene un loop (un while(1)) che esegue la connessione al server, invia il segnale di keep alive e poi esegue la funzione sleep(30000).
    Il fatto è che sembra che il thread invece venga eseguito solo una volta...

    codice:
    void *thread(void *id){
      while(1){
        printf("keep alive in thread\n");
        if(keep_alive() <0){
          printf("Errore nellinvio\n");
        }else{
          printf("Tutto bene nell'invio\n");
        }
      sleep(30000);
      }
      pthread_exit(NULL);
    }
    Dove può essere l'errore?

    Edit: problema risolto: su Linux sleep è in secondi, non in millisecondi...

    Se compilo anche per altri sistemi devo quindi correggere ogni volta il valore dello sleep?
    Ultima modifica di masternick; 13-02-2016 a 20:28

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Devi usare le direttive del preprocessore ...
    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.