如何在 C 中为 Windows 创建多线程? [英] How can i create a multithread in C for windows?
问题描述
我不知道如何在 C 中创建线程,我看到了关于 pthread.h 库的评论,但后来我听说它仅适用于 Linux 操作系统,我有一个定时器函数,我想创建一个线程那个函数,但我不知道我需要使用的库和编写代码的语法,如果有人可以为我提供一个简单的线程代码,或者告诉我我需要放置什么东西以及函数的参数.
I dont know how can I make threads in C, i saw a review about pthread.h library but then i heard that its only for Linux OS, i have a function that its a timer, i want to created a thread with that function but i dont know either the library i need to use and syntax's to write the code, if someone could provide me a simple code with threads, or tell me what things i need to put and the parameter of the functions.
这是我创建的倒计时用户申请的特定时间的函数:我需要用那个函数创建一个线程.
Here its the function i create that countdown the specific time the user apply: i need to make a thread with that function.
功能(倒计时):
#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
", 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
Here is a simple guide to winapi threads
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).还有端口和兼容层可以在 windows 内使用 posix 设施.除了库之外,Cigwin 还为您提供了完整的 posix 环境,MinGW 编译器允许您在 win32 层之上使用 posix 函数的端口.
That being said, C is a minimalistic language, does not have built-in threading like java (nor the enormous extra libraries). It was meant as a general language to build on top of it. On Unix-like systems there are system wide standard c libraries beyond the ANSI/ISO standard, which are part of the posix standard, the pthreads are posix-threads. Windows C libraries are MS makes things their own way. You can use frameworks that provides multi-OS support like glib or qt (Windows, Linux,other *nix). There are also ports and compatibility layers to use posix facilities inside windows. Cigwin gives you a full posix environment besides the libraries, The MinGW compiler allows you to use ports of posix functions on top of win32 layers.
像 glib 和 qt 这样的框架最适合保持您的代码跨平台,它们隐藏了操作系统的细节,允许使用更通用的方法.
Frameworks like glib and qt are best to keep your code multi-platform, they hide the OS specifics, allowing a more general approach.
glib 是用于 GUI 开发的 GTK 库的一部分,而 QT 也是一个 GUI 开发框架,但使用的是 C++.
glib is part of the GTK libraries for GUI development and QT is also a GUI development framework but in C++.
这篇关于如何在 C 中为 Windows 创建多线程?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!