多线程中变量的内存分配
2018-06-17 20:09:56来源:未知 阅读 ()
using System; using System.Collections.Generic; using System.Text; using System.Threading; using System.Diagnostics; namespace TestMultiThread { class Program { pp s = new pp(); static void Main(string[] args) { Program dd = new Program(); Thread th; for (int i = 0; i < 10; i++) { th= new Thread(new ThreadStart(dd.Test)); th.Name = i.ToString(); th.Start(); Thread.Sleep(10); } Console.WriteLine("wait 3 seconds"); Console.ReadKey(); } public void Test() { Int32 i = 0; i++; Console.WriteLine("name:{0}/I vaule:{1}", Thread.CurrentThread.Name,i.ToString()); s.ps(); } } class pp { public void ps() { Int32 i=0; Thread.Sleep(3000); i++; Console.WriteLine("ps:name:{0}/i:{1}", Thread.CurrentThread.Name,i.ToString()); } } }
- 发起N个线程,线程的方法体中再调用其他类的方法,这些被调用的方法也会在内存中开辟出N个空间,且都是单独存在,互补干扰。
- 发起N个线程,每个线程的方法体会开辟新的内存空间,每个方法体中的局部变量是独立存在互补干扰的。
测试代码:
- 发起10个线程,每个线程里的 i 值都为1。说明每个线程方法提都有自己的内存空间。
- 发起10个线程,每个线程再调用ps()方法,ps()方法体体休眠3秒,然后打印信息到控制台。显示效果为10个线程启动,再等待3秒后,瞬间打印10次ps()内的信息,说明线程方法体里调用其他类方法,这些类方法也会分配多个内存空间。如果ps()使用同一个内存空间,控制台信息会每隔3秒打印一次。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:无限参数的写法
下一篇:3D模型文件读写.Net SDK
- 如何利用 Shell 脚本来自动监控 Linux 系统的内存? 2019-09-17
- php+swoole多线程的操作 2019-07-24
- PHP 对输入变量名的自动转换的问题与源码分析 2019-07-24
- SQLSERVER2015中的新功能 2018-07-13
- 内存中OLTP常见的实施场景 2018-07-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash