在Windows下用VS编程多线程

#include <Windows.h>
#include <iostream>

#define THREAD_NUM 10
using namespace std;

static int times = 0;

DWORD WINAPI Thread_Test(void* plgram)
{
	int tmp = *(int*)plgram;
	printf_s("%d 进程爸爸, 我来啦!\n", tmp);
	for(int i = 0; i < 100000 ; i++)
		times++;
	printf_s("**** %d 进程爸爸, 我没啦!**** \n", tmp);
	if (plgram) free(plgram);
	return 0;
}

int main(int argc, char* argv[]) 
{
	int* p = nullptr;
	for (int i = 0; i < THREAD_NUM; i++) {
		p = new int(i + 1);
		if (!p) continue;
		// 线程ID
		DWORD threadID;   // unsigned in <=> DWORD (32位的系统中)
		// 线程的句柄
		HANDLE hThread;
		hThread = CreateThread(NULL, 0, Thread_Test, (void *)p, 0, &threadID);
	}
	Sleep(10000);
	cout << times << endl;// 这个times并不是我门期望的那样美丽
	system("pause");
	return 0;
}

注意这个times是这个进程中的线程共享的资源 ,这里没有上互斥锁,所以times值是不定的

线程的执行具有异步性,就是说是随机执行的 没有准确的先后关系,看下面的执行就知道了

创建的线程的顺序和线程执行完的顺序都是随机的

在接下来的博客里,我会更新进程和线程的区别

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值