2011-12-09 52 views
5

我不知道如何在C中創建線程,我看到了關於pthread.h庫的一篇評論,但後來我聽說它只適用於Linux操作系統,我有一個函數,它的計時器,我想創建一個線程函數,但我不知道我需要使用的庫和語法來編寫代碼,如果有人可以爲我提供一個帶線程的簡單代碼,或者告訴我需要放什麼東西以及函數的參數。我如何在C中創建一個多線程窗口?

這裏它的功能我創建倒計時用戶申請的具體時間: 我需要使用該功能的線程。

功能(倒計時):

#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

嗨。你可以使用win32 api的CreateThread – danca

回答

3

下面是一個簡單的指南WINAPI線程
http://www.cs.rpi.edu/academics/courses/netprog/WindowsThreads.html

話雖這麼說,C是一個簡約的語言,不具有內置的線程像Java (也沒有龐大的額外庫)。它的意思是建立在它之上的一般語言。在類Unix系統上,除了ANSI/ISO標準外,還有系統範圍的標準c庫,它們是posix標準的一部分,pthread是posix線程。 Windows C庫是MS以自己的方式做事。您可以使用提供多操作系統支持的框架,如glib或qt(Windows,Linux,其他* nix)。還有端口和兼容性層在窗口中使用posix設施。 Cigwin爲您提供了除庫之外的完整posix環境,MinGW編譯器允許您在win32圖層上使用posix函數的端口。

像glib和qt這樣的框架最好能讓你的代碼保持多平臺,它們隱藏了操作系統的細節,允許採用更一般的方法。

glib是用於GUI開發的GTK庫的一部分,QT也是一個GUI開發框架,但在C++中。

3

這些標籤建議您使用Windows。 Win32 API有一個CreateThread函數可用於啓動一個新的線程。但是,如果您使用的是C運行時(您是),那麼您應該使用_beginthread函數,其中包括process.h

使用_beginthread的原因是它初始化C運行時需要在線程內正確執行的線程特定狀態信息。

+0

非常感謝你:D –

3

如果您熟悉pthreads和/或需要跨平臺的代碼庫,則可以使用MinGWpthreads-win32。我最近在我的一個應用程序中使用它,它似乎很好。如果您專門爲Windows開發,那麼可能值得您按照redcomet的建議學習WinAPI線程。

相關問題