2011-12-09 18 views
5

Non so come posso creare thread in C, ho visto una recensione sulla libreria pthread.h ma poi ho sentito che è solo per Linux OS, ho una funzione che è un timer, voglio creare un thread con quello funzione, ma non so né la libreria ho bisogno di usare e la sintassi per scrivere il codice, se qualcuno potrebbe fornirmi un codice semplice con thread, o dirmi quali cose ho bisogno di mettere e il parametro delle funzioni.Come posso creare un multithread in C per Windows?

Qui è la funzione che creo quel conto alla rovescia il tempo specifico che l'utente applica: ho bisogno di fare un thread con quella funzione.

Function (conto alla rovescia):

#include <stdio.h> 
#include <stdlib.h> 
#include <stdio.h> 
#include <time.h> 

void countdown(int second) 
{ 
    int secs = 1; 
    time_t unix; 
    struct tm * timeinfo; 
    time(&unix); 
    timeinfo = localtime(&unix); 
    int t1 = timeinfo->tm_sec; 
    int t2 = timeinfo->tm_sec; 
    int i = 0; 

    while(1 == 1) 
    { 
     time(&unix); 
     timeinfo = localtime(&unix); 
     if((t1 + i) == timeinfo->tm_sec) 
     { 
       system("cls"); 
       printf("Time left %d\n", timeinfo->tm_sec - t2 - second); 
       i++; 
     } 
     if(timeinfo->tm_sec >= (t1 + second)) 
     { 
      system("cls"); 
      puts("Your time its done"); 
      break; 
     } 

    } 
} 

int main() 
{ 
    int limit; 
    printf("How much time would you like (In secs): "); 
    scanf("%d", &limit); 
    countdown(limit); 

    system("PAUSE"); 
    return 0; 
} 
+0

Hi. Potresti usare CreateThread da win32 api – danca

risposta

3

Ecco una semplice guida per WinAPI discussioni
http://www.cs.rpi.edu/academics/courses/netprog/WindowsThreads.html

Detto questo, C è un linguaggio minimalista, non sono dotati di filettatura come Java (né le enormi librerie extra). Era inteso come un linguaggio generale da costruire su di esso. Sui sistemi Unix ci sono librerie c standard di sistema oltre lo standard ANSI/ISO, che fanno parte dello standard posix, i pthreads sono thread posix. Le librerie di Windows C sono MS che fanno le cose a modo loro. È possibile utilizzare framework che forniscono supporto multi-OS come glib o qt (Windows, Linux, altro * nix). Ci sono anche porte e livelli di compatibilità per usare le strutture di posix all'interno di Windows. Cigwin offre un ambiente posix completo oltre alle librerie. Il compilatore MinGW consente di utilizzare le porte delle funzioni posix sopra i livelli win32.

I quadri come glib e qt sono i migliori per mantenere il codice multipiattaforma, nascondono le specifiche del sistema operativo, consentendo un approccio più generale.

glib fa parte delle librerie GTK per lo sviluppo GUI e QT è anche un framework di sviluppo GUI ma in C++.

3

I tag suggeriscono che stai usando Windows. Win32 api ha una funzione CreateThread che può essere utilizzata per avviare un nuovo thread. Tuttavia, se stai utilizzando il runtime C (che sei), dovresti utilizzare la funzione _beginthread includendo process.h.

Il motivo per utilizzare _beginthread è che inizializza informazioni sullo stato specifiche del thread che il runtime C richiede per eseguire correttamente all'interno di un thread.

+0

grazie mille: D –

3

Se si ha dimestichezza con pthread e/o si desidera una base di codice multipiattaforma, è possibile utilizzare MinGW e pthreads-win32. L'ho usato di recente in un'applicazione mia e sembra funzionare alla grande. Se stai sviluppando esclusivamente per Windows, probabilmente vale la pena dedicare del tempo per apprendere i thread di WinAPI come suggerito da redcomet.

Problemi correlati