2011-12-09 16 views
5

Nie wiem, jak mogę tworzyć wątki w C, widziałem recenzję o bibliotece pthread.h, ale potem usłyszałem, że to tylko dla systemu operacyjnego Linux, mam funkcję, która jest jego zegar, chcę utworzyć wątek z tym funkcja, ale nie znam ani biblioteki, której muszę używać, ani składni, aby napisać kod, jeśli ktoś mógłby mi podać prosty kod z wątkami, lub powiedzieć mi, co muszę umieścić i parametr funkcji.Jak utworzyć wielowątkowe w C dla systemu Windows?

Tutaj jest funkcja, która tworzy odliczanie w określonym czasie, o którym użytkownik ma zastosowanie: Potrzebuję utworzyć wątek z tą funkcją.

Funkcja (Odliczanie):

#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

cześć. Możesz użyć CreateThread z win32 api – danca

Odpowiedz

3

Oto proste przypomnienie WINAPI wątki
http://www.cs.rpi.edu/academics/courses/netprog/WindowsThreads.html

Mając na uwadze powyższe, C jest językiem minimalistyczna, nie mają wbudowane gwintowania jak java (ani olbrzymich dodatkowych bibliotek). Miało to służyć jako ogólny język do budowania na jego podstawie. W systemach typu Unix istnieją ogólnosystemowe standardowe biblioteki c poza standardem ANSI/ISO, które są częścią standardu posix, a pthreads to posix-threads. Biblioteki Windows C są MS sprawia, że ​​rzeczy na swój sposób. Możesz używać frameworków obsługujących wiele systemów operacyjnych, takich jak glib lub qt (Windows, Linux, inne * nix). Istnieją również porty i warstwy kompatybilności, aby używać obiektów posix w oknach. Cigwin zapewnia pełne środowisko posix poza bibliotekami, kompilator MinGW umożliwia korzystanie z portów funkcji posix na warstwach win32.

Struktury takie jak glib i qt najlepiej zachować wieloplatformowy kod, ukrywają specyfikę systemu operacyjnego, umożliwiając bardziej ogólne podejście.

glib jest częścią bibliotek GTK do programowania GUI, a QT to także framework programistyczny GUI, ale w C++.

3

Tagi sugerują, że używasz systemu Windows. Win32 api ma funkcję CreateThread, której można użyć do uruchomienia nowego wątku. Jeśli jednak używasz środowiska wykonawczego C (którym jesteś), powinieneś użyć funkcji _beginthread, włączając w to process.h.

Powodem używania _beginthread jest inicjowanie informacji o stanie wątku wymaganych przez środowisko wykonawcze C do prawidłowego wykonywania w wątku.

+0

dziękuję bardzo: D –

3

Jeśli znasz pthreads i/lub potrzebujesz wieloplatformowego codebase, możesz użyć MinGW i pthreads-win32. Niedawno użyłem go w mojej aplikacji i wygląda na to, że działa świetnie. Jeśli tworzysz wyłącznie dla systemu Windows, prawdopodobnie warto poświęcić czas na poznanie wątków WinAPI, sugerowanych przez redcomet.

Powiązane problemy