2011-12-09 5 views
5

내가 어떻게 C 스레드를 만들 수 있는지 모르겠다. pthread.h 라이브러리에 대한 리뷰를 보았지만, 리눅스 OS에 대해서만 들었다. 나는 그 타이머를 가지고 스레드를 만들고 싶다. 함수를 사용하지만, 라이브러리를 사용할 필요가 없다. 코드를 작성하는 구문이 필요하다. 누군가가 나에게 간단한 코드를 제공 할 수 있거나, 함수의 매개 변수와 매개 변수를 넣을 필요가 있다면 말해 준다.Windows 용 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

안녕하세요 : win32api로 스레드를 만드는 방법

. 당신은 Win32 API에서 CreateThread를 사용할 수 있습니다 – danca

답변

3

내장하지 않는 자바처럼 스레딩, 스레드
말했다되고 그건 http://www.cs.rpi.edu/academics/courses/netprog/WindowsThreads.html

, C는 최소한의 언어를 WINAPI하는 간단한 가이드 (엄청난 추가 라이브러리가 아닙니다). 그것의 위에 구축하는 일반적인 언어로 의미되었다. 유닉스 계열 시스템에는 posix 표준의 일부인 ANSI/ISO 표준을 뛰어 넘는 시스템 전체 표준 라이브러리가 있으며 pthread는 posix 스레드입니다. Windows C 라이브러리는 MS가 일을 스스로 만듭니다. glib 또는 qt (Windows, Linux, 기타 * nix)와 같은 다중 OS 지원을 제공하는 프레임 워크를 사용할 수 있습니다. Windows 내부에 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 용으로 개발한다면, 레드맥 제안과 같이 WinAPI 스레딩 기술을 배우는 데 시간을 할애 할만한 가치가있을 것입니다.

관련 문제