码迷,mamicode.com
首页 > 编程语言 > 详细

摘录-IT企业必读的200个.NET面试题-07 .NET多线程编程

时间:2015-07-05 02:05:18      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:

多线程的基本概念

Q: 请解释操作系统层面上的线程和进程

进程代表了一个正在运行的应用程序的实体,而一个进程中可包含1个或多个线程。

Q: 多线程程序在操作系统里是并行执行的吗

在单CPU的计算机架构上,任何时候只可能存在一个运行的线程,操作系统通过快速的调度轮换使使用者感觉到多线程在同时执行。而在多CPU的架构上,则可能存在完全并行的线程。

Q: 什么是纤程

纤程是微软公司提出的轻量级线程的概念,一个纤程拥有自己的栈和寄存器状态。一个线程可以包含多个纤程,和线程由操作系统调度有所不同的是,线程内的纤程的调度完全由程序员自己控制,操作系统的内核完全不会知道纤程的存在。

.NET中的多线程编程

Q: 如何使用.NET的程序池

System.Threading.ThreadPoll类型封装了程序池的操作。每个进程都有一个线程池,.NET提供了程序池管理的机制,所有程序池中的线程都是后台线程,它们不会阻碍程序的退出。

Q: 如何定义线程独享的全局数据

线程本地存储是一种提供了线程独享的全局数据功能的机制。在.NET中,可以使用Thread类型的SetData和GetData来操作TLS数据。同时,.NET提供了名为ThreadStatic特性来申明线程独享的数据。

Q: 如何阻止线程执行上下文的传递

线程的执行上下文是所有线程上下文的一个包装,在通常情况下,当前线程的执行上下文会自动流入到新建的线程之中。可以使用定义在System.Threading.ThreadPool类型中的UnsafeQueueUserWorkItem方法和定义在ExecutionContext类型中的SuppressFlow方法来阻止这样的流动。

多线程程序的线程同步

Q: 什么是同步块和同步块索引

同步块是指.NET维护的同步块数组中的某个元素,负责提供线程同步的操作,当某个线程拥有某个同步块时,其他线程就在试图访问该同步块时进入等待状态。同步块索引是每个堆内对象都会分配的一个字段。

Q: C#的lock关键字有何作用

lock关键字实质是Monitor.Enter和Monitor.Exit两个方法的简化语法,功能上实现了进入和退出某个对象的同步。

Q: 可否对引用类型对象自身进行同步

对引用类型自身进行同步,指的是类似于lock(this)这样的代码。把对象自身作为同步对象,会导致类型缺乏健壮性。当某个类型使用者恶意长期占用对象的同步块时,所有的其他使用者将会被死锁。

Q: 什么是互斥体,Mutex类型和Monitor类型的功能有何区别

互斥体是操作系统内同步线程的内核对象,有相应的Win32函数来操作互斥体对象。在.NET中,Mutex类型封装了所有互斥体的操作,和Monitor类型相比,Mutex类型的作用可以跨越进程,相应的,因为是在操作系统的内核中完成,所以Mutex类型的性能相对较差。

摘录-IT企业必读的200个.NET面试题-07 .NET多线程编程

标签:

原文地址:http://www.cnblogs.com/laixiancai/p/4620082.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!