2011-12-09 7 views
5

No sé cómo puedo hacer hilos en C, vi una crítica sobre la biblioteca pthread.h pero luego escuché que es solo para el sistema operativo Linux, tengo una función que es un temporizador, quiero crear un hilo con ese pero no conozco ni la biblioteca que necesito usar ni la sintaxis para escribir el código, si alguien podría proporcionarme un código simple con hilos, o decirme qué cosas necesito poner y el parámetro de las funciones.¿Cómo puedo crear un multihilo en C para Windows?

Aquí está la función que creo esa cuenta atrás el tiempo específico que el usuario aplica: necesito hacer un hilo con esa función.

Función (Cuenta atrás):

#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

Hola. Puede usar CreateThread de win32 api – danca

Respuesta

3

He aquí una guía sencilla para Winapi hilos
http://www.cs.rpi.edu/academics/courses/netprog/WindowsThreads.html

Dicho esto, C es un lenguaje minimalista, no se han incorporado en el roscado como Java (ni las enormes bibliotecas adicionales). Fue pensado como un lenguaje general para construir encima de él. En los sistemas tipo Unix, existen bibliotecas c estándar de todo el sistema más allá del estándar ANSI/ISO, que son parte del estándar posix, los pthreads son posix-threads. Las bibliotecas de Windows C son MS hace las cosas a su manera. Puede usar frameworks que brinden soporte multi-OS como glib o qt (Windows, Linux, otros * nix). También hay puertos y capas de compatibilidad para usar las instalaciones posix dentro de Windows. Cigwin le ofrece un entorno de posix completo además de las bibliotecas. El compilador MinGW le permite usar puertos de funciones posix en la parte superior de las capas de win32.

Los marcos como glib y qt son los mejores para mantener su código multiplataforma, ocultan los detalles del sistema operativo, lo que permite un enfoque más general.

glib es parte de las librerías GTK para desarrollo de GUI y QT es también un framework de desarrollo de GUI pero en C++.

3

Las etiquetas sugieren que está utilizando Windows. La api Win32 tiene una función CreateThread que se puede utilizar para iniciar un nuevo hilo. Sin embargo, si está utilizando el tiempo de ejecución C (que es), entonces debe usar la función _beginthread incluyendo process.h.

La razón para usar _beginthread es que inicializa la información de estado específica del subproceso que el tiempo de ejecución de C requiere para ejecutar correctamente dentro de un subproceso.

+0

muchas gracias: D –

3

Si está familiarizado con pthreads y/o desea una base de código multiplataforma, puede usar MinGW y pthreads-win32. Recientemente lo utilicé en una aplicación mía y parece funcionar muy bien. Si está desarrollando exclusivamente para Windows, probablemente valga la pena su tiempo para aprender a enrutar WinAPI como lo sugirió redcomet.

Cuestiones relacionadas