C++演示进程和线程在创建和使用方面的巨大区别《C++多线程编程实战》

  • 进程必须要从磁盘加载一个文件.
    进程是完整的实体.真正需要的时候才使用进程
    创建进程要使用许多系统资源
    还有其它例如守护进程(daemon),监听器(服务器)等
  • 线程比进程快得多,开支也小得多.
    创建进程不用从磁盘加载,只要提供StartAddress指针就可以
    进行小型的并发操作,绝大多数情况下都应该选择线程

  • 进程很贪婪,想占用所有的资源. 进程的地址是私有的
  • 线程执行速度比进程快.优点是所有的进程资源都属于共同的地址空间.大幅减少了从RAM转移至CPU的系统开销.句柄,指针和对象都可以使用这些资源

演示进程和线程在创建和使用方面的巨大区别
有2个项目

控制台项目一:tmpThread

  • tmpThread.cpp
#include <windows.h>
#include <iostream>
#include <tchar.h>

using namespace std;

DWORD WINAPI StartAddress(LPVOID lpParameter)
{
	cout << "Hello. I am a very simple thread."
		<< endl
		<< "I am used to demonstrate thread creation."
		<< endl;
	return 0;
}

int _tmain(int argc, _TCHAR* argv[])
{
	//创建线程. 注意, 我们只需在相同的代码段中定义StartAddress例程即可
	//因为主函数负责开始线程和执行并发操作
	HANDLE hThread = CreateThread(NULL, 0, StartAddress, NULL, 0, NULL);

	//创建进程. 注意CreateProcess的第一个参数, 它指向要从磁盘加载的文件
	STARTUPINFO startupInfo = { 0 };
	PROCESS_INFORMATION processInformation = { 0 };

#ifdef _DEBUG
	BOOL bSuccess = CreateProcess(
		TEXT("..//Debug//tmpProcess.exe"), NULL, NULL,
		NULL, FALSE, 0, NULL, NULL, &startupInfo,
		&processInformation);
#else
	BOOL bSuccess = CreateProcess(
		TEXT("..//Release//tmpProcess.exe"), NULL, NULL,
		NULL, FALSE, 0, NULL, NULL, &startupInfo,
		&processInformation);
#endif

	WaitForSingleObject(hThread, INFINITE);
	CloseHandle(hThread);

	return system("pause");
}

控制台项目2:tmpProcess

打开[解决方案资源管理器] . 在 tmpThread 项目上单击右键, 选择[项目依赖项],在下拉菜单中选择 tmpThread,然后选择下面的 tmpProcess 项目

  • tmpProcess.cpp
#include <tchar.h>
#include <iostream>

int _tmain(int argc, _TCHAR* argv[])
{

	std::cout << "Hello.I am a very simple process."
		<< std::endl
		<< "I am used to demonstrate process creation."
		<< std::endl;

	return 0;
}

  • 运行结果
    在这里插入图片描述
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值