#include "stdafx.h"
#include<windows.h>
#include<strsafe.h>//win2003SDK必须安装 要不无此头文件。此文件是为了实现StringCchPrintf,StringCchLength。

#define MAX_THREADS 5
#define BUF_SIZE 255

typedef struct _MyData{
int val1;
int val2;
}MYDATA,*PMYDATA;

DWORD WINAPI ThreadProc(LPVOID lpParam)
{
  HANDLE hStdout;
  PMYDATA pData;
  TCHAR msgBuf[BUF_SIZE];
  size_t cchStringSize;
  DWORD dwChars;
  hStdout=GetStdHandle(STD_OUTPUT_HANDLE);
  if(hStdout==INVALID_HANDLE_VALUE)
  return 1;
  
  pData=(PMYDATA)lpParam;

  StringCchPrintf(msgBuf,BUF_SIZE,TEXT("Parameters=%d,%d\n"),pData->val1,pData->val2);
  //printf("%d,%d\n",pData->val1,pData->val2);
  StringCchLength(msgBuf,BUF_SIZE,&cchStringSize);
  WriteConsole(hStdout,msgBuf,cchStringSize,&dwChars,NULL);

  HeapFree(GetProcessHeap(),0,pData);
  return 0;
}
void main()
{
  PMYDATA pData;
  DWORD dwThreadId[MAX_THREADS];
  HANDLE hThread[MAX_THREADS];
  int i;

  for(i=0;i<MAX_THREADS;i++)
  {

    pData=(PMYDATA)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(MYDATA));
    if(pData==NULL)
      ExitProcess(2);

    pData->val1=i;
    pData->val2=i+100;
    hThread[i]=CreateThread(
                  NULL,//defaultsecurityattributes
                  0,//usedefaultstacksize
                  ThreadProc,//threadfunction
                  pData,//argumenttothreadfunction
                  0,//usedefaultcreationflags
                  &dwThreadId[i]);//returnsthethreadidentifier

    if(hThread[i]==NULL)
    {
      ExitProcess(i);
    }
  }

  WaitForMultipleObjects(MAX_THREADS,hThread,TRUE,INFINITE);

  for(i=0;i<MAX_THREADS;i++)
  {
    CloseHandle(hThread[i]);
  }

  system("pause");
}

CreateThread demo的更多相关文章

  1. CreateThread线程函数

    之前在一篇 基于TCP套接字实现的简单Demo   一文中用到了线程函数CreateThread()函数来 创建新的线程.下面以一个最简单的多线程例子来说明. C-代码如下: //最简单的创建多线程实 ...

  2. CreateThread传递多个参数的方法(利用结构体的参数指针)

    很多朋友一直都在问CreateThread如何传递多个参数,CreateThread传递参数的方式是指针传递的,所以这里也可以利用指针来做!Demo 关键代码如下: type  TfrmTestThr ...

  3. 通过一个demo了解Redux

    TodoList小demo 效果展示 项目地址 (单向)数据流 数据流是我们的行为与响应的抽象:使用数据流能帮我们明确了行为对应的响应,这和react的状态可预测的思想是不谋而合的. 常见的数据流框架 ...

  4. 很多人很想知道怎么扫一扫二维码就能打开网站,就能添加联系人,就能链接wifi,今天说下这些格式,明天做个demo

    有些功能部分手机不能使用,网站,通讯录,wifi基本上每个手机都可以使用. 在看之前你可以扫一扫下面几个二维码先看看效果: 1.二维码生成 网址 (URL) 包含网址的 二维码生成 是大家平时最常接触 ...

  5. 在线浏览PDF之PDF.JS (附demo)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html#skill 下载地址:http://mozilla.gith ...

  6. 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo

    Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...

  7. vue双向数据绑定原理探究(附demo)

    昨天被导师叫去研究了一下vue的双向数据绑定原理...本来以为原理的东西都非常高深,没想到vue的双向绑定真的很好理解啊...自己动手写了一个. 传送门 双向绑定的思想 双向数据绑定的思想就是数据层与 ...

  8. Android Studio-—使用OpenCV的配置方法和demo以及开发过程中遇到的问题解决

    前提: 1.安装Android Studio(过程略) 2.官网下载OpenCV for Android 网址:http:opencv.org/downloads.html 我下载的是下图的版本 3. ...

  9. iOS之ProtocolBuffer搭建和示例demo

    这次搭建iOS的ProtocolBuffer编译器和把*.proto源文件编译成*.pbobjc.h 和 *.pbobjc.m文件时,碰到不少问题! 搭建pb编译器到时没有什么问题,只是在把*.pro ...

随机推荐

  1. adb 解说

    ADB是一个 客户端-服务器端 程序, 其中客户端是你用来操作的电脑, 服务器端是android设备. 先说安装方法, 电脑上需要安装客户端. 客户端包含在sdk里. 设备上不需要安装, 只需要在手机 ...

  2. maven环境变量配置不成功的原因

    在配置java开发环境时,MAVEN_HOME配置后,再将%MAVEN_HOME%\bin加入path后,mvn -v 不成功,显示mvn不是内部命令 网上寻觅各种办法无果 于是弃用MAVEN_HOM ...

  3. VS10_慢_优化

    参考网址: http://blog.csdn.net/cll131421/article/details/15341367 1. 我暂时只做了这个: “ 一.VS2010选项视觉体验设置 工具-> ...

  4. python中常见的日期换算

    time模块提供各种操作时间的函数  说明:一般有两种表示时间的方式:       第一种是时间戳的方式(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的       第二种 ...

  5. linux服务器应用NTP配置时间同步

    linux服务器应用NTP配置时间同步 • 为什么建议使用ntpd而不是ntpdate? #####原因很简单,ntpd是步进式的逐渐调整时间,而ntpdate是断点更新,比如现在服务器时间是9.18 ...

  6. Java面试题下

    这部分主要是开源Java EE框架方面的内容,包括hibernate.MyBatis.spring.Spring MVC等,由于Struts 2已经是明日黄花,在这里就不讨论Struts 2的面试题, ...

  7. secureCRT如何设置眼睛舒适的颜色

    1.会话选项 设置背景颜色 Options => Sessions options => Terminal => Emulation, 在 Terminal下拉列表下选择Linux, ...

  8. LeetCode OJ:Triangle(三角形)

    Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent n ...

  9. MAMP mac下启动Mysql

    MAMP mac下启动Mysql /Applications/MAMP/Library/bin/mysql -u root -p 初始密码 root:

  10. Alex and broken contest CodeForces - 877A

    /* Name: Copyright: Author: Date: 2018/5/2 10:45:16 Description: 要求出现一个朋友的名字,仅一次 */ #include <ios ...