using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
class count
{
public count(int from, ManualResetEvent e)
{
_from = from;
_done_event = e;
}
private int _from;
private int _sum;
private ManualResetEvent _done_event;
public int docount(int _from)
{
int sum = 0;
for (int i = 0; i <= _from; i++)
{
sum += i;
}
return sum;
}
public void ThreadPoolCallback(Object threadContext)
{
int threadIndex = (int)threadContext;
Console.WriteLine("Thread {0} started", threadIndex);
_sum = docount(_from);
Console.WriteLine("Thread count result is {0}", _sum);
_done_event.Set();
}
}
public class ThreadPoolEx
{
static void Main()
{
const int times = 10;
ManualResetEvent[] mre = new ManualResetEvent[times];
Random r = new Random();
Console.WriteLine("Launch {0} tasks", times);
for (int i = 0; i < times; i++)
{
mre[i] = new ManualResetEvent(false);
count c = new count(r.Next(1, 1000), mre[i]);
ThreadPool.QueueUserWorkItem(c.ThreadPoolCallback, i);
}
WaitHandle.WaitAll(mre);
Console.WriteLine("All threads finished.");
}
}
分享到:
相关推荐
### C#线程池应用详解 #### 一、引言 在现代软件开发中,特别是在网络编程领域,高效地利用系统资源是至关重要的。多线程技术为提高程序的并发性和响应性提供了强大的支持。本篇文章将通过一个具体的案例——使用...
在.NET框架中,C#线程池是一种管理线程资源的有效机制,它允许开发者高效地创建和调度工作线程,而无需显式管理线程的生命周期。线程池的使用可以减少系统的开销,提高系统资源利用率,尤其在处理大量短生命周期任务...
在C#中可以通过System.Threading.ThreadPool类来实现,在默认情况下,ThreadPool最大可建立500个工作线程和1000个I/O线程(根据机器CPU个数和.net framework版本的不同,这些数据可能会有变化) 下载文件服务器的...
C#中的线程池是一种高效的线程管理机制,它由.NET框架提供,旨在优化系统资源的使用,提高多线程程序的性能。线程池管理是程序员在编写高性能并发应用程序时必须掌握的关键技术之一。 线程池的工作原理是预先创建一...
### C#线程池与文件下载服务器实现 #### 一、线程池概念与优势 在多线程编程中,创建和销毁线程是相对昂贵的操作。为了提高系统的响应能力和性能,可以预先创建一系列线程并存储在一个池中,这就是线程池。线程池...
总的来说,使用C#线程池处理委托返回布尔值,需要定义委托类型,创建委托实例,将任务放入线程池,并考虑线程同步和异常处理。通过合理运用线程池,可以有效地提高应用程序的并发性能和资源利用率。
总之,`MyThreadPool`项目是学习和实践C#多线程编程的好例子,它展示了如何自定义线程池以适应复杂的应用场景,同时也提醒我们,即使有标准库提供的线程池,也需要根据具体需求进行优化和定制。通过深入理解这个项目...
C#语言提供了丰富的多线程支持,让我们能够编写出高效的多线程应用程序。在这个"多线程互斥实例 多线程获取同一变量"的示例中,我们将探讨如何在多个线程中安全地访问共享资源,避免数据不一致性和竞态条件。 首先...
在这个"C#线程、线程池和线程间同步的例子"中,我们可以深入学习到如何在VS2008环境下创建和管理线程。 首先,线程是操作系统分配CPU时间的基本单元,每个进程至少包含一个线程。在C#中,我们可以通过`System....
在这个"C#数据采集例子"中,我们将探讨如何利用C#进行数据采集,同时也会关注正则表达式在其中的应用,尽管描述中提到对正则表达式的掌握程度不高,但它是数据处理中的关键工具。 1. **C#数据采集基础** - **...
本文将详细解析标题为“C# IOCP高性能 SOCKET并发完成端口例子(有C#客户端)完整实例源码”的技术知识点,以及如何利用C#进行IOCP(I/O完成端口)开发,实现广域网下的高效SOCKET通信。 首先,我们要理解什么是...
- `ThreadDemo.rar`:可能包含C#线程的基本用法示例,如创建新线程、线程同步、线程池等。 - `C#面试题 包括 ADO.net 多线程等.rar`:这个文件可能提供了关于线程和ADO.NET的面试问题解答,以及相应的代码示例。 ...
下面,我们将深入探讨标题和描述中提到的C#通信例子程序所涉及的知识点。 1. **网络通信基础**: - 网络套接字(Sockets):C#中的System.Net.Sockets命名空间提供了对套接字操作的支持,允许开发者创建客户端和...
在IT行业中,多线程和线程池是并发编程中的重要概念,特别是在Java、C#等面向对象语言中。线程池是一种管理线程资源的技术,它可以提高系统效率,减少线程创建和销毁的开销。下面将详细介绍线程池的工作原理、优势...
在本资源中,我们关注的是"VS2005环境下编写的C#50个例子(源代码)",这是一份专为初学者和有一定经验的开发者设计的学习资料。Visual Studio 2005(简称VS2005)是微软推出的集成开发环境(IDE),支持包括C#在内的...
标题中的"C#高性能大容量SOCKET并发完成端口例子"是指使用C#编程语言实现的高性能、大容量的网络通信程序,它利用了Windows操作系统的完成端口(IOCP,I/O Completion Port)机制来处理大量的并发Socket连接。...
本实例源码“C#高性能大容量SOCKET并发完成端口例子完整实例源码”是针对C#开发者设计的,它提供了使用C#实现的基于完成端口(I/O Completion Ports, IOCP)技术的Socket并发处理解决方案,并包含了客户端的实现。...
总结来说,C#线程池是处理并发任务的关键工具,特别是在服务器端编程中,它可以有效地管理线程资源,提高系统性能和响应速度。通过合理使用`ThreadPool`类及其相关方法,开发者可以构建高效、可扩展的服务程序,同时...
本示例“C#多线程排序例子”聚焦于如何利用多线程来提升排序操作的速度。 首先,让我们了解什么是多线程。在计算机程序中,线程是程序执行的基本单元,每个线程都有自己的执行路径。在单线程环境中,代码按顺序执行...
本资源是一个关于C#聊天室的例子,对于初学者和有经验的开发者来说,都是一个宝贵的参考资料。 首先,我们要了解C#聊天室的核心概念。在C#中创建聊天室涉及到网络编程和多线程技术。网络编程主要使用System.Net命名...