如何在 C 中为 Windows 创建多线程? [英] How can i create a multithread in C for windows?

查看:23
本文介绍了如何在 C 中为 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆