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;
}



Win32API下的多线程编程入门

多线程,Multi-Thread。移步别处理解Thread和Process。多线程可用多种API实现,这里用Win32 API实现最简单的多线程,线程彼此独立,不涉及线程间的数据共享。 先直接上程序:...
  • u010153703
  • u010153703
  • 2014-08-08 18:25:10
  • 1479

[Win32] 多线程和线程同步

多线程:一个进程创建时,默认情况下系统会为它创建一个主线程,(如果使用Native API创建的线程就没有主线程,是空的,必须自己创建主线程),应用程序可以自己创建线程,还有以前写过的一篇“DLL注入...
  • zuishikonghuan
  • zuishikonghuan
  • 2015-10-02 10:46:46
  • 3556

Win32多线程程序设计

Win32多线程程序设计”多线程多任务“是程序开发者和用户都需要的一个重要资产。从WindowsNT开始,完全支持32位程序的抢占式多任务。带领我们进入了”多线程多任务“时代。基本概念 进程(pro...
  • chenjintaoxp
  • chenjintaoxp
  • 2015-07-31 16:04:54
  • 1377

求win32下的多线程控制台程序(c实现)

#include #include bool bEnd = false;void fun(void *){ for(int i = 0; i  printf("Im thread!/n"); bEnd...
  • thb28
  • thb28
  • 2004-09-01 12:00:00
  • 2280

Win32多线程的创建方法和基本使用

Summary: 总结Win32提供的创建多线程相关的API接口和基本的使用框架。 Ref: MSDN: http://msdn.microsoft.com/zh-cn/library/y6...
  • gengshenghong
  • gengshenghong
  • 2011-11-07 21:58:37
  • 3606

Win32下定时器与多线程

Windows环境下,CreateThread是操作系统级函数,而在C/C++开发时应该调用C/C++的运行库函数_beginthread或者更为安全的_beginThreadEx; 对于定时器Cr...
  • zhangwu1241
  • zhangwu1241
  • 2017-02-24 09:58:35
  • 441

第一次写WIN32 SOCKET C/S模式聊天程序有感

第一次写WIN32 SOCKET C/S模式聊天程序有感
  • crazywang66
  • crazywang66
  • 2016-05-27 00:55:34
  • 1004

【win32程序控制台】练习题:简易计算器(液晶显示屏显示)

/ * 程序的版权和版本声明部分 * Copyright (c) 2012, 华南师范大学软件工程专业 * All rights reserved. * 文件名称: 简易计算器(液...
  • Hookc
  • Hookc
  • 2012-03-26 15:58:01
  • 1003

如何使用纯win32函数和C语言实现一个简单的文本编辑器

一、引言在学习小甲鱼老师的Win32 SDK编程的教程的时候,当学到了第35课“插入符号”这课的时候,看到了这个源代码,我实在难掩心头的激动之情。是啊!这不就是一个用纯win32函数和C语言实现的一个...
  • u012814856
  • u012814856
  • 2017-04-11 23:37:19
  • 3873

一个使用纯Win32 SDK和C语言实现的五子棋游戏

GobangGame这是一个使用纯Win32 SDK和C语言实现的五子棋游戏在这个游戏中实现的功能 [x] 绘制一个15 * 15的棋盘 [x] 绘制5个着重点位置 [x] 根据鼠标左键的点击,可以绘...
  • u012814856
  • u012814856
  • 2017-03-13 00:03:43
  • 664
收藏助手
不良信息举报
您举报文章:C入门:简单的win32线程
举报原因:
原因补充:

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