如何在C中为Windows创建multithreading?

我不知道如何在C中创建线程,我看到了关于pthread.h库的评论,但后来我听说它仅适用于Linux操作系统,我有一个函数,它是一个计时器,我想用这个函数创建一个线程但是我不知道我需要使用的库和语法编写代码,如果有人可以提供一个简单的代码与线程,或告诉我我需要放置什么东西和函数的参数。

这里是我创建倒计时用户应用的特定时间的函数:我需要创建一个具有该function的线程。

function(倒计时):

#include  #include  #include  #include  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; } 

这是一个简单的winapi线程指南
http://www.cs.rpi.edu/academics/courses/netprog/WindowsThreads.html

话虽这么说,C是一种简约语言,没有像java这样的内置线程(也没有庞大的额外库)。 它是作为一种通用语言建立在它之上。 在类Unix系统上,有超出ANSI / ISO标准的系统范围标准c库,它们是posix标准的一部分,pthread是posix-threads。 Windows C库是MS以自己的方式做事。 您可以使用提供多操作系统支持的框架,如glib或qt(Windows,Linux,其他* nix)。 还有端口和兼容层可以在windows中使用posix工具。 除了库之外,Cigwin还为您提供了完整的posix环境.MinGW编译器允许您在win32层之上使用posix函数的端口。

像glib和qt这样的框架最好保持代码多平台,它们隐藏了操作系统细节,允许更通用的方法。

glib是用于GUI开发的GTK库的一部分,QT也是一个GUI开发框架,但在C ++中。

标签建议您使用Windows。 Win32 api有一个CreateThread函数,可用于启动新线程。 但是,如果您正在使用C运行时(您是),那么您应该通过包含process.h来使用_beginthread函数。

使用_beginthread的原因是它初始化C运行时在线程内正确执行所需的特定于线程的状态信息。

如果您熟悉pthread和/或想要跨平台代码库,则可以使用MinGW和pthreads-win32 。 我最近在我的应用程序中使用它,它似乎工作得很好。 如果你是专门为Windows开发的,那么正如redcomet建议的那样,可能值得花时间学习WinAPI线程。

C标准库没有线程概念。 线程通常是OS中的概念。 您可以使用win32api来处理线程,就像在linux中使用pthread一样(实际上并不相同……)

要了解有关win32api的更多信息,请访问MSDN。

如何使用win32api创建线程:

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