在创建线程时,我在哪里可以找到有关背后正在发生的信息?

3
我在哪里可以找到有关创建新线程时发生的背景信息的信息?当我写下以下内容时:
    Thread t = new Thread ()
....
t.start()....

我想知道实际发生了什么事情......你能帮我转接一下吗?

什么平台?.Net、Mono/Linux还是Mono/OSX? - Dykam
抱歉... .net(我添加了) - Royi Namir
1
他没有说他想看实际(反汇编)代码,只是一般情况下发生的事情。有人给它投了反对票,但我看不出有理由。了解幕后情况非常有价值,不过仅研究本地线程也可以。 - Dykam
一个了解底层情况的好地方是Joe Duffy的书,Concurrent Programming on Windows。这本书将回答你关于启动线程时发生的事情以及更多问题。非常值得购买。 - Jim Mischel
2
另外,参见CLR via C#。这不是你可以通过一个[so]问题学习到的东西。 - John Saunders
显示剩余3条评论
2个回答

1

虽然托管线程的行为方式不一定与本机线程相同,但请查看涵盖基本原理的本文:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms681917(v=vs.85).aspx

具体来说,当您创建一个线程时,代码将在以下上下文中运行:

线程是进程内可被调度执行的实体。进程的所有线程共享其虚拟地址空间和系统资源。此外,每个线程维护异常处理程序、调度优先级、线程本地存储、唯一的线程标识符以及一组结构,系统将使用这些结构保存线程上下文直到它被调度。线程上下文包括线程的一组机器寄存器、内核堆栈、线程环境块以及线程进程地址空间中的用户堆栈。线程还可以拥有自己的安全上下文,可用于模拟客户端。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接