草庐IT

多线程、Handler机制、ThreadLocal

全部标签

c# - ASP.NET 工作线程的大部分事件时间是否都处于阻塞状态?

我正在尝试确定ASP.NET工作线程的角色。我的IIS7安装默认允许最多25个工作线程,否则我会将其设置为1。当用户请求.aspx页面时,我知道该请求将检索工作线程。但是加载该页面上的每个图像是否也占用了一个工作线程?一旦检索到图像,检索它的工作线程是否也负责将其传输给用户(通过blocking-tcp-sockets?)? 最佳答案 让我们来看看对ASPX页面的Web请求对用户及其浏览器的看法。用户将浏览器导航到ASPX页面。在服务器上,IIS将此识别为ASP.NET请求并将其路由到.NET处理程序进行处理,其中包括采用工作线程、

c# - 在非 UI 线程 Silverlight 5 浏览器应用程序中创建 UserControl

我有一个Silverlight5浏览器应用程序。有一个类publicclassActivityControl:UserControl{publicvoidLoadSubControls(){//CreatesOtherUserControls,doescalculationsandisveryslow..Norefactoring..}}我需要创建此类的多个实例并在运行时调用方法LoadSubControls。publicclassBasicContainer:UserControl{publicvoidCreateMultipleActivityControls(){for(inti

Java EasyExcel带格式多线程导出百万数据

JavaEasyExcel带格式多线程导出百万数据1.背景说明2.方案概述(1)大数据量导出问题主要是以下三个地方:(2)将写入导出Excel等功能单独分开成一个微服务:(3)注意:(4)方案设计:标注说明(5)maven依赖:3.详细设计4.缓存5.可行性验证6.代码以下为结合实际情况作的方案设计,导出阈值以及单sheet页条数都可以根据实际情况调整大佬可直接跳过新手教程,直接查看文末代码————————————————————————————————1.背景说明    针对明细报表,用户会选择针对当前明细数据进行导出,便于本地或者线下进行处理或者计算等需求。不过一般在这种大数据量的导出任务

c# - 如何衡量 .NET 中托管线程的性能

我想测量托管(.NET)线程的性能。具体来说,我需要测量以下-线程使用CPU多长时间?它保持阻塞多长时间(等待远程方法调用完成)?使用System.Diagnostic.StopWatch没有帮助,因为它读取操作系统/硬件的高分辨率性能计时器功能,其中可能包括并行运行和共享同一CPU的其他线程消耗的时间。 最佳答案 您可以使用此处描述的方法http://www.codeproject.com/KB/dotnet/ExecutionStopwatch.aspx它使用系统函数GetThreadTimeshttp://msdn.micro

c# - 如何增加 .NET Remoting over TCP 使用的线程数?

我们正在尝试增加.NETRemotingoverTCP使用的线程数。我们已经尝试更改ThreadPool.SetMinThreads,但我们的压力测试表明.NETRemoting只能处理大约100个并发请求。(但这不是硬性限制)。在任务管理器中,我们可以看到我们的RemotingServer进程线程数从11增加到大约80,然后在压力测试后回落到11。我们正在运行ASP.NET4.0应用程序。 最佳答案 总结一下。远程服务器由Windows服务托管,远程客户端由IIS托管。要执行压力测试,您可以使用ApacheBench,它调用调用远

c# - 使用 Handler 跟踪文件

我目前正在使用Asp.Net和C#开发一个网站。我正在使用Asp.NetHandler来允许用户下载文件。我可以毫无问题地下载文件。但是我需要记录哪些文件已成功下载。这部分对我来说似乎无法正常工作。例如。如果我单击要下载的文件,然后在浏览器提示上单击取消,我的代码仍会写入日志。我似乎无法弄清楚如何在文件成功下载后写入日志only。我的代码在下面。publicvoidProcessRequest(HttpContextcontext){stringlogFilePath="PathToMyLogFile";stringfilePath=Uri.UnescapeDataString(con

c# - 防止两个线程进入具有相同值的代码块

假设我有这个函数(假设我以线程安全的方式访问缓存):objectGetCachedValue(stringid){if(!Cache.ContainsKey(id)){//longrunningoperationtofetchthevalueforidobjectvalue=GetTheValueForId(id);Cache.Add(id,value);}returnCache[id];}我想防止两个线程同时为相同的值运行“长时间运行的操作”。显然我可以将整个事情包装在一个lock()中,但是无论值如何,整个函数都会阻塞,我希望两个线程能够执行长时间运行的操作,只要它们正在寻找不同的

c# - c#中多线程和异步程序的区别

我最初在Stackoverflow和谷歌中搜索过类似的问题。只有一个链接给出了一些要点,但我看不清楚。[1]以下问题困扰着我:在异步编程中,什么是真正的回调方法?是代表?异步程序的实现是使用多线程吗?如能提供图解说明,将不胜感激[1]"DifferencebetweenMultithreadingandAsynchronousprogramming" 最佳答案 单线程阻塞要理解异步/并发/多线程,我们需要从最基础的知识开始,以及为什么我们要让问题变得如此复杂。一开始只有真正的单线程阻塞应用程序。这些都是非常简单的程序,而且很可能就是

c# - C#中的跨线程事件处理

我正在使用一个在单独的线程中运行自己的事件调度程序的框架。该框架可能会生成一些事件。classSomeDataSource{publiceventOnFrameworkEvent;voidFrameworkCallback(){//Thisfunctionrunsonframework'sthread.if(OnFrameworkEvent!=null)OnFrameworkEvent(args);}}我想将这些事件传递给Winforms线程上的Winforms对象。我显然检查了InvokeRequired并在必要时将其分派(dispatch)给Winforms线程。classSome

c# - 限制异步方法的并行度而不阻塞线程池线程

我有一个异步方法RequestInternalAsync()它向外部资源发出请求,并希望编写一个包装方法,通过减少并行性来限制对该方法的并发异步请求的数量。想到的第一个选项是TaskScheduler并发性有限(LimitedConcurrencyLevelTaskScheduler、ConcurrentExclusiveSchedulerPair等)。但要使用自定义调度程序运行任务,我必须使用TaskFactory启动任务只接受Action,即我不能通过不阻塞额外的线程来等待内部方法的执行来做到这一点。第二个选项是SemaphoreSlim,它完成了它的工作,但在这种情况下,我正在实