search
HomeBackend DevelopmentC++Windows Thread API in C Program
Windows Thread API in C ProgramSep 05, 2023 pm 07:17 PM
c programThread APIwindows thread

Windows Thread API in C Program

Threads are created in the Windows API using the CreateThread() function, and just like in Pthreads, a set of properties such as security information, stack size, and thread flags are passed to the function. In the following program, we use the default values ​​of these properties. (The default does not initially set the thread to a suspended state, but instead makes it eligible to be run by the CPU scheduler.) After the sum thread is created, the parent must wait for it to complete before it can output the value of Sum because the value is set by the summation thread. In the Pthread program, we use the pthread join() statement to make the parent thread wait for the summation thread. Here, using the WaitForSingleObject() function, we do the equivalent of this in the Windows API, which causes the creating thread to block until the summing thread has exited. In situations where you need to wait for multiple threads to complete, you can use the WaitForMultipleObjects() function. The function is passed four parameters -

  • The number of objects to wait for
  • A pointer to an array of objects
  • A flag indicating whether all objects have been signaled.
  • Timeout duration (or infinite)

For example, if THandles is an array of thread HANDLE objects of size N, the parent thread can wait for all of its child threads to complete this statement -

WaitForMultipleObjects(N, THandles, TRUE, INFINITE);

Multi-threaded C program using Windows API.

Example

#include<windows.h>
#include<stdio.h>
DWORD Sum;
/* data is shared by the thread(s) */
/* thread runs in this separate function */
DWORD WINAPI Summation(LPVOID Param){
   DWORD Upper = *(DWORD*)Param;
   for (DWORD i = 0; i <= Upper; i++)
   Sum += i;
   return 0;
}
int main(int argc, char *argv[]){
   DWORD ThreadId;
   HANDLE ThreadHandle;
   int Param;
   if (argc != 2){
      fprintf(stderr,"An integer parameter is required</p><p>");
      return -1;
   }
   Param = atoi(argv[1]);
   if (Param < 0){
      fprintf(stderr,"An integer >= 0 is required</p><p>");
      return -1;
   }
   /* create the thread */
   ThreadHandle = CreateThread( NULL, /* default security attributes */ 0, /* default stack size */    
   Summation, /* thread function */ &Param, /* parameter to thread function */ 0, /* default creation    flags */ &ThreadId);
   /* returns the thread identifier */
   if (ThreadHandle != NULL){
      /* now wait for the thread to finish */ WaitForSingleObject(ThreadHandle,INFINITE);
      /* close the thread handle */
      CloseHandle(ThreadHandle);
      printf("sum = %d</p><p>",Sum);
   }
}

The above is the detailed content of Windows Thread API in C Program. For more information, please follow other related articles on the PHP Chinese website!

Statement
This article is reproduced at:tutorialspoint. If there is any infringement, please contact admin@php.cn delete
C程序计算3D空间中三个点之间的距离C程序计算3D空间中三个点之间的距离Aug 29, 2023 pm 12:41 PM

给定一个三维平面,因此有三个坐标,任务是找到给定点之间的距离并显示结果。在三维平面上,有三个坐标轴,x轴的坐标为(x1,y1,z1),y轴的坐标为(x2,y2,z2),z轴的坐标为(x3,y3,z)。计算它们之间的距离有一个直接的公式如下所示$$\sqrt{\lgroupx2-x1\rgroup^{2}+\lgroupy2-y1\rgroup^{2}+\lgroupz2-z1\rgroup^{2}}$$下面是表示三个不同坐标轴及其坐标的图示下面使用的方法如下&minus;输入坐标(x1,

二项式系数表的C程序二项式系数表的C程序Aug 26, 2023 pm 12:49 PM

Givenwithapositiveintegervaluelet&rsquo;ssay&lsquo;val&rsquo;andthetaskistoprintthevalueofbinomialcoefficientB(n,k)where,nandkbeanyvaluebetween0tovalandhencedisplaytheresult.WhatisBinomialCoefficientBinomialcoefficient(n,k)istheorderofcho

最小成本路径的C程序最小成本路径的C程序Aug 26, 2023 pm 06:17 PM

在这里,我们将解决C语言中的最小成本路径问题。这意味着在2D矩阵上完成,其中每个单元格都有一个移动成本。我们必须找到一条从左上角到右下角且行程成本最小的路径。您只能从给定单元格向下和右下遍历单元格。为了解决这个特定问题,动态编程比递归更好。给定成本矩阵cost[][]和位置(m,n),我们必须编写一个函数,返回从(0,0)到达(m,n)的最小路径成本到达(m,n)的路径的总成本是该路径上所有成本的总和(包括源和目的地)。假设−所有成本是积极的。输入矩阵中不存在负成本循环示例查找到(2,2)的最小

在C语言中编写一个程序,打印出N个五角数的序列在C语言中编写一个程序,打印出N个五角数的序列Aug 25, 2023 pm 02:25 PM

程序说明五维体数是帕斯卡三角形的任意一行中第五个数字,从左到右或从右到左开始,起始于5项行14641。这种数字的前几个是1,5,15,35,70,126,210,330,495,715,1001,1365Pentatopenumbersbelongintheclassoffiguratenumbers,whichcanberepresentedasregular,discretegeometricpatterns.Theformulaforthenthpentatopicnumberis$$\l

C++程序以找到给定值的反正切C++程序以找到给定值的反正切Aug 26, 2023 am 10:09 AM

我们在三角学中最常使用的比率包括正弦、余弦、正切等等。您可以使用角度来计算这些比率。如果我们知道比率值,我们还可以使用反三角函数计算角度。本课程将向您展示如何使用C++的反正切(arctan)函数,使用正切值(以弧度为单位)计算角度。atan()函数使用atan()技术和反三角正切函数计算角度。C++标准库包含这个函数。在使用这种方法之前,我们必须导入cmath库。此方法返回以弧度为单位的角度,并采用正切值作为参数。以下使用简单的语法-语法#include<cmath>atan(&l

C++程序:替换特定索引处的字符C++程序:替换特定索引处的字符Aug 25, 2023 pm 10:53 PM

字符串是一组字符。我们也可以将它们称为字符数组。考虑到一个由字符串组成的字符数组,这些字符串具有指定的索引和值。有时候我们可以对字符串进行一些修改,其中一种修改是替换字符通过提供一个特定的索引。在本文中,我们将看到如何替换一个字符从一个specificindexinsideastringusingC++.语法String_variable[&lt;givenindex&gt;]=&lt;newcharacter&gt;在C++中,我们可以使用索引访问字符串字符。在

C程序输入一个由空格分隔的整数序列的数组C程序输入一个由空格分隔的整数序列的数组Aug 25, 2023 am 11:33 AM

问题陈述编写一个C程序,以空格分隔的整数作为数组输入。SampleExamples输入12345输出‘Arrayelementsare-’1,2,3,4,5Explanation的中文翻译为:解释输入包含5个以空格分隔的整数。输入997687542356878967343423输出‘Arrayelementsare-’99,76,87,54,23,56,878,967,34,34,23Explanation的中文翻译为:解释输入包含11个以空格分隔的整数。方法一在这种方法中,我们将把输入中的以空

第n个卡塔兰数的C程序第n个卡塔兰数的C程序Aug 28, 2023 pm 02:25 PM

Givenanintergern;thetaskistofindtheCatalanNumberonthatnthposition.So,beforedoingtheprogramwemustknowwhatisaCatalanNumber?Catlannumbersarethesequenceofnaturalnumbers,whichoccursintheformofvariouscountingnumberproblems.CatalannumbersC0,C1,C2,&helli

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment