2011-12-09 1 views
5

私はC言語でスレッドを作成する方法を知っていませんが、pthread.hライブラリについてのレビューを見ましたが、Linux OSのためだけに聞いたことですが、タイマー、関数を使用するのに必要なライブラリを知っていません。もし誰かが私にスレッドを使って簡単なコードを提供できるのであれば、コードを書くために構文とライブラリを使う必要があります。Cのウィンドウでマルチスレッドを作成するにはどうしたらいいですか?

ここで、関数iは、ユーザーが適用する特定の時間をカウントダウンするように作成します。 私はその関数でスレッドを作成する必要があります。

機能(カウントダウン):ここで

#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

が言われている、Cは最小限の言語である、内蔵されていないことをJavaのようなスレッドのスレッド
http://www.cs.rpi.edu/academics/courses/netprog/WindowsThreads.html

をWINAPIするための簡単なガイドです(巨大な余分なライブラリでもない)。それはその上に構築するための一般的な言語として意図されていた。 Unixのようなシステムでは、posix標準の一部であるANSI/ISO標準を超えたシステム全体の標準Cライブラリがあり、pthreadはposixスレッドです。 Windows Cライブラリは、MSが独自の方法で作るものです。 glibやqt(Windows、Linux、その他* nix)のようなマルチOSサポートを提供するフレームワークを使用することができます。ウィンドウ内にposix機能を使用するためのポートと互換性レイヤーもあります。 Cigwinは、ライブラリのほかに完全なPOSIX環境を提供します.MinGWコンパイラでは、Win32層の上にposix関数のポートを使用できます。

glibやqtのようなフレームワークは、コードをマルチプラットフォームに保つのが最善で、OSの仕様を隠してより一般的なアプローチを可能にします。

glibはGUI開発用のGTKライブラリの一部であり、QTはGUI開発フレームワークでもC++です。

3

このタグは、Windowsを使用していることを示しています。 Win32 APIには、新しいスレッドを起動するために使用できるCreateThread関数があります。しかし、Cランタイムを使用している場合は、process.hを使用して_beginthread関数を使用する必要があります。

_beginthreadを使用する理由は、Cランタイムがスレッド内で正しく実行するために必要なスレッド固有の状態情報を初期化するためです。

+0

ありがとうございました:D –

3

pthreadsに精通していて、クロスプラットフォームのコードベースが必要な場合は、MinGWpthreads-win32を使用できます。私は最近、私のアプリケーションでそれを使用し、それは素晴らしい動作するようです。あなたがWindows専用に開発しているのであれば、おそらくRedAPetが示唆しているように、WinAPIスレッディングのことを学ぶのに時間がかかるでしょう。

2

C標準ライブラリにはスレッドの概念がありません。スレッドは、通常、OSの概念です。 Linuxでpthreadを使うのと同じように、win32apiを使ってスレッドを扱うことができます(実際はそうではありません)。

win32apiについて詳しくは、MSDNをご覧ください。 Win32APIでスレッドを作成する方法

http://msdn.microsoft.com/en-us/library/windows/desktop/ms682516(v=vs.85).aspx

関連する問題