#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. VC 模拟CMD 匿名管道

    #include "stdafx.h" #include <Windows.h> #include <stdio.h> #include <stdli ...

  2. Linux嵌入式 -- 内核 - proc文件系统

    1. 什么是proc文件系统? 实例:通过 /proc/meminfo,查询当前内存使用情况. 结论:proc文件系统是一种在用户态检查内核状态的机制. 2.Proc文件分类 特点  每个文件都规定了 ...

  3. The type java.io.ObjectInputStream cannot be resolved. It is indirectly referenced from required .class files

    要解决的话,方法有两个 1)可以选用较低版本的sdk,比如我就用回1.6版本的sdk window->preferences->Java->Installed JREs->Ad ...

  4. 解决mssql for linux 中文乱码问题

    什么叫一波未平一波又起,这就是,好不容易安装完成了,在用的时候居然出现了乱码,很是头疼,但还是解决了这个蛋疼的问题,在windows中使用mssql这么久,从来没出现过中文乱码的情况,具体原因是出现在 ...

  5. Install nginx on ubuntu

    1. Install libpcre3, libpcre3-dev2. Install zlib1g-dev3. Download nginx and unzip it4. ./configure5. ...

  6. SQL group by底层原理——本质是排序,可以利用索引事先排好序

    转自:http://blog.csdn.net/caomiao2006/article/details/52140993 由于GROUP BY 实际上也同样会进行排序操作,而且与ORDER BY 相比 ...

  7. DB21019E An error occurred while accessing the directory "/root".

    如果是在Linux上刚装完DB2即刻建立database,可能会遇到错误DB21019E An error occurred while accessing the directory "/ ...

  8. linux 下安装rar解压

    在liunx下原本是不支持rar文件的,需要安装liunx下的winrar版本,操作如下 wget http://www.rarsoft.com/rar/rarlinux-4.0.1.tar.gz t ...

  9. ACM学习历程—Hihocoder 1291 Building in Sandbox(dfs && 离线 && 并查集)

    http://hihocoder.com/problemset/problem/1291 前几天比较忙,这次来补一下微软笔试的最后一题,这题是这次微软笔试的第四题,过的人比较少,我当时在调试B题,没时 ...

  10. swing之gridlayout

    package gui1; import java.awt.FlowLayout; import java.awt.GridLayout; import javax.swing.JButton; im ...