C入门:简单的win32线程

原创 2011年10月12日 14:43:05
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//

#pragma once


#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <tchar.h>
#include <windows.h>
#include <process.h>

void t1();

typedef struct 
{
	int vi;
	char vs[20];
}Args,ThreadArgs;

/** 参数复杂点的线程测试 */
VOID thread3(PVOID pvoid);
void threadT3();

/** 带简单参数的线程测试 */
VOID thread2(PVOID pvoid);
void threadT2();

/** 不带参数的线程测试 */
VOID thread1(PVOID pvoid);
void threadT1();

// TODO: reference additional headers your program requires here


// stdafx.cpp : source file that includes just the standard includes
// thread_test1.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information

#include "stdafx.h"

// TODO: reference any additional headers you need in STDAFX.H
// and not in this file

void t1()
{
	Args* a = (Args*) malloc(sizeof(Args) );
	
	free(a);
}

void threadT3()
{
	ThreadArgs* args = (ThreadArgs*) malloc( sizeof(ThreadArgs));

	args->vi = 2090;
	strcpy(args->vs, "Max");

	_beginthread(thread3, 0, args);

	
}

VOID thread3(PVOID pvoid)
{
	ThreadArgs* args = (ThreadArgs*) pvoid;

	printf("vi:%d,vs:%s\n", args->vi, args->vs);

	free(args);
}

void threadT2()
{
	int i = 100;
	_beginthread (thread2, 0, &i) ;

	for(int i = 0; i < 50; i++)
	{
		Sleep(100);
	}
}

VOID thread2(PVOID pvoid)
{
	//printf("%d\n", *((int*)pvoid));

	for(int i = *((int*)pvoid),end = i+20; i < end; i++)
	{		
		printf("number: %d\n", i);
		Sleep(100);		
	}	
}

void threadT1()
{
	_beginthread (thread1, 0, NULL) ;

	for(int i = 0; i < 10; i++)
	{
		Sleep(100);
	}
}

VOID thread1(PVOID pvoid)
{
	for(int i = 0; i < 20; i++)
	{		
		Sleep(100);
		printf("number: %d\n", i);
	}	
}



// thread_test1.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
	//t1();
	threadT3();
	//threadT2();
	//threadT1();	

	return 0;
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

GCRoot对象

1.本地变量 2类的静态属性 3常量 4本地方法

不用加号求两个数的和

分析:以3 + 5为例 3的二进制为 1 1,5的二进制为 1 0 1,可以这样做:1先给这两个数加起来不考虑进位,这样得到的结果为 1 1 0,会发现与^得到的结果相同,与是先给两个数 做^运算;...
  • Unimen
  • Unimen
  • 2011-09-14 21:45
  • 1303

海康面筋

1.当场让我看俩程序写答案 2 aop 3 hibernate二级缓存 4 Spring的东西 5当场写了一个观察者模式 6 过了 Hr

设计模式六大原则(4):接口隔离原则

定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。 问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D...

秒杀系统的一点思考

秒杀系统难点往往是短时间内对数据进行读写,然后造成读写上的一些冲突,甚至锁非常严重.当然知道难点在哪里,我们自然就有办法解决,人类智慧无限,办法总比困难多. 简单说来也就两点,限流和提升关键点的性能....

关于java代码中的位运算的使用

最近在查看java源码, 其实大量用到了位运算,在看到下面的代码时困惑了 long msb = 0; long lsb = 0; for (...

Java位运算原理及使用讲解

前言 日常开发中位运算不是很常用,但是巧妙的使用位运算可以大量减少运行开销,优化算法。举个例子,翻转操作比较常见,比如初始值为1,操作一次变为0,再操作一次变为1。可能的做法是使用三木运算符,判断原始...

Android 性能优化之内存泄漏的检测与修复

转载请注明本文出自 clevergump 的博客:http://blog.csdn.net/clevergump/article/details/52013873, 谢谢!在 Android 开发中,...

leetcode137 Single Number II java

DescriptionGiven an array of integers, every element appears three times except for one, which appea...

leetcode260 Single Number III java

DescriptionGiven an array of numbers nums, in which exactly two elements appear only once and all th...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)