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



跟我一起玩Win32开发(2):完整的开发流程

上一篇中我给各位说了一般人认为C++中较为难的东西——指针。其实对于C++,难点当然不局限在指针这玩意儿上,还有一些有趣的概念,如模板类、虚基类、纯虚函数等,这些都是概念性的东西,几乎每一本C++书上...
  • tcjiaan
  • tcjiaan
  • 2013年01月13日 16:26
  • 84069

Win32多线程程序设计

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

Win32多线程编程 — 线程同步与通信

一.线程间数据通信 系统从进程的地址空间中分配内存给线程栈使用。新线程与创建它的线程在相同的进程上下文中运行。因此,新线程可以访问进程内核对象的所有句柄、进程中的所有内存以及同一个进程中其他所有线程...
  • slj_win
  • slj_win
  • 2016年03月07日 11:05
  • 622

Win32多线程编程学习心得

博客原文地址:http://jerkwisdom.github.io/study/thread/thread-Summary/ 此处博客不再更新。 为什么多线程? 其实不想写这一点,多线程并不一定...
  • jonathan321
  • jonathan321
  • 2016年03月02日 20:26
  • 1547

Win32多线程之互斥器(Mutexes)

http://blog.csdn.net/wjj715211/article/details/16899667 Win32的Mutex用途和critical section非常类似,但是它牺牲速度以...
  • l799623787
  • l799623787
  • 2014年01月14日 11:51
  • 2146

[Win32] 多线程和线程同步

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

WIN32--线程睡眠

目的: 有时候我们想让线程不被调度一定的时间,也就是说让线程睡眠一段时间。 API 接口: 在 Win32中可以调用 Sleep,SleepEx 和 SwitchToThread 三...
  • XJF199001
  • XJF199001
  • 2016年05月20日 11:05
  • 408

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

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

Win32API下的多线程编程入门

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

使用PostThreadMessage在Win32线程间传递消息

PostThreadMessage可以用于线程之间的异步通讯,因为它不用等待调用者返回,这也许是线程通讯中最简单的一种方法了。 PostThreadMessage是一个Windows API函数。其...
  • jiangqin115
  • jiangqin115
  • 2015年07月21日 15:13
  • 1855
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C入门:简单的win32线程
举报原因:
原因补充:

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