有关多线程中容易被忽略的问题

本文介绍了线程与进程的基本概念及其优缺点,并通过一个具体的C语言示例展示了如何调整线程栈大小来避免内存溢出的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线程:是进程中一个程序流程,是一个最小的独立运行单位。其实就是处理一件事情的一个完整函数。线程有自己的堆栈但是没有独立的地址空间。一个线程死掉相当于整个进程死掉,没有多进程程序健壮。

进程:可以理解为一个应用实例,可以分配系统资源(CPU时间,内存)具有独立的地址空间。

线程优点:1、资源节俭 2、内部通信机制方便

工作经验:在多线程程序开发中,对前任工作人员代码中处理事务的一个线程增加功能,增加功能时需要定义数组,这时有可能造成线程的内存溢出,错误代码为12.解决方法有两种:

第一种:简单粗暴,直接修改线程的栈大小。

第二种:把线程中的占用内存多的程序封装成函数进行调用。如下代码只有第一种,第二种也很简单不做介绍。

#include <stdio.h>
#include <windows.h>

#define STACK_SIZE 0.5*1024*1024

DWORD WINAPI ThreadFunc(PVOID pvParam)
{
DWORD dwRet = 0;
printf("%-3d:0x%x\n",pvParam,&dwRet);
return dwRet;
}

int
main(int,char**)
{
DWORD dwTid;
printf("Main:0x%x\n",&dwTid);
for(int i=0;i<50;i++)
CreateThread(NULL,STACK_SIZE,ThreadFunc,(PVOID)i,0,&dwTid);

Sleep(2000);
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值